Php és gyorsítótár

belépés

Ahhoz, hogy a hálózat optimalizálása mechanizmus használatával tárolására egy vett HTTP-n keresztül a dokumentumokat a cache az újrafelhasználási célú őket anélkül, hogy a forrás szerver. A dokumentumok a cache elérhető lesz a következő alkalommal, amikor belépnek, kirakodása nélkül az elsődleges kiszolgálóról, amelynek célja, hogy fokozza az ügyfél hozzáférési sebesség hozzá, és csökkenti a hálózati forgalmat.

Gyorstárazására vagy nem?

Tárolható a cache az oldal határozza meg a dinamikus információk az adatforrás. Így szükséges, hogy a cache határozza meg te alapján várható élettartamukat oldal.

Amikor kiválasztja a minta az adatbázis (például a keresést a felhasználó által beírt szó), akkor ezt az oldalt biztos, hogy kérje a szerver minden hívás nélkül használni cache, mint a több kért kívánt szavakat hatalmas, és ha azt is meg kell küzdeniük a változó adathalmaz, caching értelmetlen. Vagy jön a képző tegyük fel menetrend jön a látogatókat (ami változik minden látogatás, hogy gyakorlatilag minden hívás), akkor a cache egyszerűen káros.

Ajánlott olvasmány Andrew Lipattsev: A lépések száma minőségének javítása a helyszínen

Azonban, ha beszélünk ugyanazon a grafikonon, de tegnap, a cache ajánlott, mivel ezek már nem lehet változtatni, és meg tudjuk menteni magunkat, és a felhasználó erőforrásokat és időt tölteni ezeket az oldalakat helyezi azokat egy helyi vagy megosztott gyorsítótár. Ennek folytatása ez a helyzet, amikor megalakult a menetrend nem valós idejű, és óránként. Akkor lehet megjósolni a dátumot a végén a „eltarthatóság” generált adatokat.

Általános elvek megőrzése oldalakat a cache

PHP-vezérlő program cache működésének eredményéről, így további mezők fejlécében HTTP-válasz kihívás Header () függvényt.
Néhány általános kijelentések jellemző nem csak az a PHP-program:

  • Pages továbbított POST soha nem tárolja a cache.
  • Pages kért GET és paramétereket tartalmazó (az URL jelen van „?”) Nem a cache, ha másképp nincs feltüntetve.

Így a legtöbb esetben további utasításokat a program nem kell hozzá. Főbb kell hozni a figyelmet lehet kettőre:

  • tilalmat cache dokumentumok cache alapértelmezett
  • caching dokumentumok, amelyeket nem lehet az alapértelmezett cache-t.

Ban cache dokumentumok cache alapértelmezett

Ez a probléma a PHP-script hívják paraméterek nélkül, vagy az index könyvtárak, de az adatokat generáló személyesen alatt a felhasználó (például cookie-k alapján vagy a felhasználói ügynök), vagy dolgozik alapján gyorsan változó adatokat. A HTTP / 1.1 tudjuk működtetni következő területeken:

Lejár
Meghatározza a lejárati dátumot a dokumentum. Beállítása, hogy a múltban határozza meg a tilalom a cache az oldalt.

Cache-Control: no-cache
cache kezelése. Az érték a no-cache határozza tilalmat cache ezt az oldalt. Verzió HTTP / 1.0 protokoll működik «Pragma: no-cache».

Last-Modified
Dátum Legújabb egyik tartalmi változtatásokat. A mező tényleges csak statikus oldalakat. Apache helyettesíti ezen a területen a mező értéke Date dinamikusan generált oldalak, köztük tartalmazó oldalakat SSI.

Az oldalon www.php.net adni a következő kódot letiltani cache-t.

Azonban ez a fejléc felesleges. A legtöbb esetben:

header ( "Lejár: Thu, január 1, 1970 00:00:01 GMT");

Ha egy adott dokumentum „elavult” kell létrehozni lejár megegyezik a dátuma mezőben.
header (. "Expires:" gmdate ( "D, d M Y H: i: s") "GMT".);

Nos, nem szabad elfelejteni, hogy a nyomtatvány kért POST szintén nem tartoznak a cache-t.

Ajánlott irodalom „csoportosítás” - egy új eszköz Serpstat

Gyorsítótárral dokumentumok, amelyeket nem lehet cache alapértelmezés

Az inverz probléma, úgy tűnhet első pillantásra abszurd. Azonban ebben van szükség. Amellett, hogy az egyszerű minimalizálásával a forgalom a fejlesztés web-programnak figyelembe kell vennie a kényelmet dolgozik a felhasználó azt. Például egyes kiszolgáló oldalak alapján generált statikus tömeg adatokat. Az a lehetőség, beleértve azokat a cache-szerver nagymértékben növeli a sebességet a felhasználó, és részlegesen enyhíti a következőtől számos regenerálódás ezen az oldalon. Cím teszi a tárolást a proxy szerver:

Gyorsítótárral lejárta előtt a helyességét

A fenti megoldás nagyon egyszerű, bár alkalmas a legtöbb feladatot. De a protokoll HTTP / 1.1 eszközökkel rendelkezik több vékony kezelése cache oldalak, és vannak olyan feladatok használatát igénylő ezeket a mechanizmusokat. Példaként - webes alkalmazások, amelyek adatokkal dolgoznak nagy volumenű és megjósolta a dinamizmus. Az adatok helyességét a módon lehet beállítani a dátumot az előrejelzés frissítéseket, és módosítja a tartalmat. Ezekben az esetekben a különböző cache fejléceket.

Gyorsítótárral előrejelzett frissítése

$ Dt_tmp = getdate (date ( "U"));
header (. "Expires:" gmdate ( "D, d M Y H: i: s", dátum ( "U") - (86.400 * ($ dt_tmp [ "wday"] - 8))) "GMT".);
header ( "Cache-Control: public");

Egy másik megközelítés használják nagyobb működési frissítési információt és egyidejűleg magas szerver forgalom (egyébként caching nem lenne hatékony) használata Cache-Control fejléc: max-age = másodperc az az idő, ami után a dokumentum tekinthető elavult, és egy magasabb prioritást kiszámítása " frissesség „a dokumentum.

Ajánlott irodalom legfontosabb a kereső marketing

Ha közzéteszi hírek egy 30 perces időintervallumon belül:

header ( "Cache-Control: public");
fejléc ( "cache-szabályozás: max-kor = 1800");

gyorsítótárral tartalom

Tekintsük a példát kibocsátó egy képet egy adatbázis alapján azonosítjuk azonosítót. Hívjon az oldalon a következők:

így a szabályok szerint az oldal nem lesz eltárolt (vannak olyan paraméterek), de a fejléc lehet irányítani.

mysql_connect ( "host", "felhasználó", "passwd");
$ Image = mysql ( "db", "válassza pics, típusát a kép, ahol id = $ id");
Header ( "Cache-Control: nyilvános, must újraérvényesítés");
Header ( "Vary: Content-ID");
Header ( "Content-ID:" .md5 (mysql_result ($ image, 0, "képek")));
Header ( "Content-type:" .mysql_result ($ image, 0, "type"));
echo mysql_result ($ image, 0, "képek");
mysql_freeResult ($ image);
mysql_close ();

Megjegyzések az orosz Apache

És kellemes (vagy kellemetlen) az üzenet az orosz Apache felhasználók. Régi idők óta a szerver ad a felhasználónak kódolt automatikusan biztosítja az összes oldalak (nem csak a dinamikus) fejléc tilalmat cache-t.

Lejár: Thu, január 1, 1970 00:00:01 GMT

Annak érdekében, hogy minden oldal nincs a gyorsítótárban. Formáció elévülési fejlécben script nincs hatása. Miért kell ezt csinálni, és néhány, a módszerei a harc vannak leírva apache.lexa.ru és nincs szükség reprodukálni ezeket a tippeket itt. Figyelembe véve a munka PHP + Apache orosz Itt van, hogyan lehet hatással a cacheability.
Szkriptek, levezeti a képeket a helyzet egyszerű - orosz Apache nem újrakódolni (tehát nem ustanavlivaetsrok lejárati) dokumentumok MIME-típusának image / *. Ahhoz, hogy a cache a szöveges dokumentumok valószínűleg fel kell használni «Cache-Control: saját, max-age =» cache engedélyével egy böngészőben. Bár ez az elméleti feltételezés nem bizonyított.