Cache control a Internet Explorer


Koncem minulého týdne, kdy jsem musel dobrovolně do mnou vyvíjeného systému pro plánování konferencí implementovat bezpečností chybku, aby byl prohlížeč Internet Explorer schopný zobrazit stránky korektně jsem dneska zanadával opět na téma internet exploreru.

Díky bohu bylo ale řešení v tomto případě o něco jednodušší: můj systém umožňuje v průběhu plánování nového, nebo editace stávajícího zařízení na pozadí ověřovat, zda je daná videokonferenční místnost prázdná a zda uživatel, kterého na akci chci přizvat volný, či nemám v daný termín naplánované něco já. Pro tuto operaci využívám asynchronní požadavek na pozadí, kdy Javascriptem volám obslužnou rutinu na straně serveru a ten mi vrátí XML s mnou požadovanými informacemi. Plán dobrý, vše funguje. Ovšem přišel za mnou kolega, že jeho Internet Explorer umožňuje naplánovat akci v době, kdy je vše obsazeno. Chyba ve stored proceduře? To už snad ne, takže stačilo pár průchodu Etherealem a koukám, že se nic neodesílá.

Chvíle googlení a už vím, že prohlížeč Internet Explorer naprosto ignoruje HTTP hlavičky s informacemi o ukládání či neukládání do cache, pokud je požadavek typu GET, což v mém případě samozřejmě je. Jak z toho? Jednoduše – tvářit se, že pokaždé vyžaduju jinou stránku. Já to vyřešil tak, že do url přidávám další parametr, ve kterém mám aktuální čas. Prasárna, ale funguje.

var d = new Date();
var time = d.getTime();

url = url + '&time=' +time;


Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *