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:
- 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.
- 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".);