PHP min. 5.6.8MySQL min. 5.1Apache min. 2.0
GitHub
Přidejte kódy
PHP-Fusion 9 Jádro
v9.0
Český překlad
Pravidelně aktualizovaný
Demo
Testovat PHP-Fusion

Technologie

Kešování: má význam expires?

Kešování: má význam expires?
Je nepopiratelné, že tzv. webové cache (keše) zmenšují na webech zpoždění. Proto je k tomu mj. určena odpovědní http hlavička expires. Avšak validátory pro čistotu webů tuto hlavičku nesnášejí. Označují ji za špatnou hodnotu. Má tedy význam expires nastavovat?

Je nepopiratelné, že tzv. webové cache (keše) zmenšují na webech zpoždění. Proto je k tomu mj. určena odpovědní http hlavička expires. Avšak validátory pro čistotu webů tuto hlavičku nesnášejí. Označují ji za špatnou hodnotu. Má tedy význam expires nastavovat?

Cílem kešování je tedy snížení zátěže hardware PC a zvýšení rychlosti odezvy webové stránky. Ovládání keši je možné zmíněnou http hlavičkou Expires. Určuje všem keším, jak dlouho je objekt čerstvý. Po uplynutí nastaveného času se pak dotáží původního serveru, zda byl dokument změněn. Hlavička Expires je podporována prakticky všemi klienty. Je umístěna v Doctype v sekci HEAD, jako meta tag:

echo"n";

Jak však vidíme, oficiální HTML validátor W3C takové nastavení nesnáší a označuje jej za chybu.

Expirace webu, validátor označuje jako chybu

Webové servery umožňují nastavit odpovědi hlavičku http expires vypršením čerstvosti na absolutní čas, na čas odvozený z času posledního shlédnutí objektu (poslední access time), nebo na čas odvozený od posledního času, kdy se dokument na vašem serveru změnil (poslední modification time). Hlavičky Expires jsou užitečné na ovládání kešování stránek, které jsou pravidelně měněny. Když například aktualizujete stránku s novinkami každý den v šest ráno, můžete nastavit objekt pro vypršení v tomto čase, takže keše budou vědět, kdy si vzít čerstvou kopii bez toho, aby si uživatel musel stránku sám aktualizovat.

Hlavičky Expires jsou obzvláště dobré pro nastavení kešování statických obrázků (jako jsou navigační proužky a tlačítka). Protože se moc nemění, můžete jim nastavit extrémně dlouhý čas expirace (tj. vypršení čerstvosti), takže se váš web bude uživatelům jevit jako pružněji reagující.

Jediná správná hodnota jakékoli hlavičky Expires je HTTP datum; cokoli jiného bude s největší pravděpodobností interpretováno jako "v minulosti", takže objekt bude nekešovatelný. Pamatujte také na to, že čas v HTTP datu je Greenwichský hlavní čas (GMT), nikoli lokální čas.

Například: Expires: Fri, 30 Oct 2016 33:20:22 GMT

Nevýhody a co s nimi?:

Jak je ze shora uvedeného zřéjmé, může být hlavička Expires užitečná, má však některá omezení. Zaprvé kvůli tomu, že obsahuje datum, hodiny na serveru a keš musejí být synchronizovány. Pokud mají rozdílné představy o čase, nebude dosaženo patřičných výsledků a keše mohou chybně považovat starý obsah za čerstvý. Takže dojde k anomálii. To je poměrně hodně ošidné. Proto je nutné zajistit, aby byl systémový čas na serveru přesný. Jedním ze způsobů, jak se to dá udělat, je použít Network Time Protocol (NTP). A to je operace navíc při níž musíte spolupracovat s providerem vašeho hostingu. Dalším problémem může být opomenutí, že jste pro nějaký obsah nastavili a tedy že má vypršet v konkrétní čas. Pokud tedy před uplynutím tohoto času hlavičku Expires nezaktualizujete, každý požadavek půjde zpět na váš server, což zvýší přenos a odezvu. To je obrovská nevýhoda!

Řešením tohoto problému může být vynecháním meta tagu expirace v Doctype webu a v nastavení konfiguračního souboru .htaccess, kde kešování prostě vypneme:

Expirace webu, nastavení v souboru .htaccess
V souboru .htaccess je expirace webu zapnutá, lze ji vypnout zápisem OFF.

  • Autor: Vícha Květoslav (Kvido)
  • PC-politika.cz Zdroj: Adaptic.cz
  • Stupeň znalosti - expert

Kvido 19.06.2016 10:05 753 0 komentářů

0 komentářů

Zanechat komentář

Přihlaste se, abyste mohli zveřejnit komentář.
  • Žádné komentáře byly zveřejněny.
Nejnovější témata fóra
  Vlákno Zobrazení Odpovědi Poslední příspěvek
obrázky v news
v PHP - Fusion 9.0.3
34 1 RobiNN
23-05-2018 21:03
Gist
v Administrace obsahu
72 2 Kvido
19-05-2018 07:12
Token
v PHP - Fusion 9.0.3
83 2 Balin50
18-05-2018 12:52
Chyba - DatabaseSetup.inc
v PHP - Fusion 9.0.3
66 3 RobiNN
17-05-2018 17:46
tagy vo fóre
v PHP - Fusion 9.0.3
53 0 Balin50
16-05-2018 19:42
Code v news [Vyřešeno]
v PHP - Fusion 9.0.3
95 5 RobiNN
16-05-2018 18:52