Ach ne! Kde je JavaScript?
Váš webový prohlížeč nemá povolen JavaScript nebo nepodporuje JavaScript. Pro správné zobrazení tohoto webu nebo pro upgrade na webový prohlížeč, který podporuje JavaScript, povolte JavaScript ve webovém prohlížeči.
PHP-Fusion 9 Jádro
v9.03.00
Překlad
Pravidelně aktualizovaný
Demo
Testovat PHP-Fusion

Novinky

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
  • !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');

Kvido 19.06.2016 09:05 2,781 0 komentářů

0 komentářů

Zanechat komentář

Přihlaste se, abyste mohli zveřejnit komentář.
  • Žádné komentáře nebyly zveřejněny.

Nejnovější témata fóra
  Vlákno Zobrazení Odpovědi Poslední příspěvek
Fórum - reputacia
v PHP-Fusion 9
6 1 Balin50
17-02-2019 17:26
Stránka bola aktualizovaná na 9.03.00
v Obecná diskuse
31 0 RobiNN
16-02-2019 13:24
FAQ
v PHP-Fusion 9
372 4 Balin50
12-02-2019 09:55
Vlastný panel - editacia
v Administrace obsahu
145 0 Balin50
12-02-2019 09:52
Zoznam členov
v PHP-Fusion 9
368 3 RobiNN
11-02-2019 23:05
Fórum - nové vlákno
v Administrace obsahu
174 1 RobiNN
11-02-2019 23:00
Panely
v PHP-Fusion 9
307 6 RobiNN
10-02-2019 20:27