PHP FAQ a jelenlegi - utántöltő

Hogyan lehet elkerülni caching a böngésző oldalon?

Mielőtt megnézzük a módszerek kliens és szerver oldali gyorsítótárat az első dolog, meg kell értenünk, hogyan lehet megelőzni a caching oldalak általában web-böngésző (vagy proxy szerver). A legjobb módja ennek elérésére használja meta tagek HTML:


Behelyezése múltbeli dátum a meta tag lejár, azt mondja a böngészőnek, hogy a tárolt másolat a lap mindig elavult. Ez azt jelenti, hogy a böngésző soha gyorsíthatóságát. Meta tag Pragma: no-cache elég jól támogatja a megállapodást, amely a leginkább böngészők. Megtaláljuk ezt a címkét, általában nem gyorsíthatóságát (bár nincsenek garanciák, ez csak egy megállapodás).

Ez jól hangzik, de van két probléma használatával kapcsolatos meta tagek:


  1. Ha egy tag nem létezik, ha egy oldalon kérte a böngésző először, de később jelenik meg (például, ha módosítja a benne pageheader.php fájlt. Ami egy sapkát minden internetes oldal), a böngésző marad boldog tudatlanságban leledzik, és fel fogja használni cache Sway bányák az eredeti.

  1. Proxy szervereket, caching, mint például a web-oldal általános az ISP, általában nem vizsgálja közvetlenül a tartalmát HTML-dokumentumot. Ehelyett csak egy web-szerver, ahonnan jött a dokumentumokat, és a HTTP protokoll. Más szóval, a web-böngésző is feltételezhetjük, hogy ne gyorsíthatóságát, de a proxy szerver a böngésző és a web-szerver valószínűleg nem tudja, hogy - és továbbra is küld az ügyfél ugyanabban a már elavult, Oldal.

A legjobb megoldás az, hogy használja a HTTP protokoll segítségével közvetlenül PHP header függvény. A fenti egyenértékű a két meta-tagek:


Mi lehet egy lépéssel tovább használja a fejléc Cache-Control. összeegyeztethető támogató böngészők HTTP 1.1:


Ez biztosítja, hogy a web-böngésző, illetve a köztes proxy nem gyorsíthatóságát, így a látogatók mindig megkapja a legújabb verzióját a tartalmat. Tény, hogy az első rovatban kell önellátó, ez a legjobb módja annak, hogy az oldal nem tároljuk. Cache-Control fejléc és Pragma adunk "err". Annak ellenére, hogy nem működik minden böngészőben vagy proxy, akkor zárkóznak néhány olyan esetet, lejár nem működik megfelelően (például, ha a kliens számítógép dátuma nincs megfelelően beállítva).

Természetesen a teljes elutasítása caching biztosítja számunkra a problémákat, hogy a korábban tárgyalt ebben a fejezetben. Most úgy véljük, a megoldást ezekre a problémákra.

Internet Explorer cache és fájlok letöltése

A vita a PDF, adják a 3. fejezet, alternatív típusú tartalmak kifejtette, hogy problémák merülhetnek fel, ha foglalkozunk cache és a fájlok letöltése. Ha a szolgáltatás terhelés PHP-script fájlt használják ilyen fejléc, mint a Content-Disposition: attachment, filename = myFile.pdf vagy Content-Disposition inline, filename = myFile.pdf. akkor problémák Internet Explorer'om, ha azt mondja a böngésző nem gyorsíthatóságát.

Internet Explorer fogantyúk letöltésére egy meglehetősen szokatlan módon, hogy elvégezzük a két kéréseket a web-oldalon. Az első kérés, hogy letölt egy fájlt, és elmenti a cache amíg be nem bizonyosodik a második kérelem (mentés nélkül válasz). Ez a kérés hatására a fájlátvitel folyamat a végfelhasználó összhangban fájltípust (pl elindul az Acrobat Reader, ha a fájl egy PDF-dokumentum). Ez azt jelenti, hogy ha küld fejlécet tiltó böngésző cache az oldalt, az Internet Explorer törli a fájlt az első és a második kérelmet, így a végfelhasználó kap semmit. Ha a fájl, amit ad egy PHP script nem változik, az egyik legegyszerűbb megoldás az, hogy távolítsa el a „tiltják caching” fejlécek egy script.

Kézi ajánlja is hozzá

// mindig módosításra
header (. "Last Modified:" gmdate ( "D, d M Y H: i: s") "GMT".);

Kapcsolódó cikkek