Vhodné nastavení mod_expires

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Vhodné nastavení mod_expires
« kdy: 14. 10. 2014, 22:51:49 »
následující text může obsahovat nesmysly
---------
Ahoj,

mám takové dilema. asi víte že je dobré web stránky cachovat. Já používám apache modul mod_expires

zde například pravidla kde se instruuje web browser aby si uložil obsahové prvky:
Kód: [Vybrat]
# 1 YEAR
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$" >
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>

mě právě se nelíbí ten 1 rok. a nevím proč to všude tak doporučují.

přijde mi lepší dát třeba 5 minut z toho důvodu že bude mít rychle návštěvník nový soubor pokud bude aktualizován.

Proč myslím že cache může být takto krátká? Protože mám za to, že po uplynutí toho času kdy má cachovat (5 minut) se zeptá serveru (http request header) zda ten daný soubor nebyl změněn (k tomu slouží "Last-modiffied" a nebo "File ETag") a pokud zjistí browser že soubor nebyl modifikován, dále servíruje dalších 5 minut z cache a tak pořád dokoa?

----
to co jsem řekl může být blbost, mohli byste mě prosím opravit / vysvětlit? (u mě jde o www stránku, kde se obrázky mění průměrně jednou za 10 minut až 2 dny.
« Poslední změna: 15. 10. 2014, 07:07:25 od Petr Krčmář »
Linux nováček - CeskeForum.com


fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re:Rada ohledně funkce Cache Web browseru a HTTP, Apache
« Odpověď #1 kdy: 14. 10. 2014, 22:55:06 »
jde mi o tu délku cachování a zda je ta má teze o 5 minutové cache na obrázky správná. pokud by byla, přijde mi, že jakékoliv více jak denní cachování by bylo nežádoucí pokud stojím o to aby návštěvník viděl aktuální obrázek co nejdříve
Linux nováček - CeskeForum.com

pajon

Re:Rada ohledně funkce Cache Web browseru a HTTP, Apache
« Odpověď #2 kdy: 15. 10. 2014, 00:09:19 »
Rok sa používa napríklad vtedy ak máš súbor, ktorý po aktualizácií bude mať inú adresu. Zväčša sa to robí tak, že máš adresu napríklad

http://example.com/assets/AABBCC/images/myimage.png

Reťazec AABBCC je náhodne vygenerovaný názov adresára, ktorý obsahuje aktuálne súbory. V prípade ak by sa súbor myimage.png zmenil, tak sa vytvorí nový adresár, ktorý bude mať iné meno ako ten predtým. Tým sa zmení aj cesta k súboru a súbor sa už nebude brať z cache.

Re:Rada ohledně funkce Cache Web browseru a HTTP, Apache
« Odpověď #3 kdy: 15. 10. 2014, 07:08:11 »
Cache se používá právě proto, aby se prohlížeč serveru nějakou dobu serveru na daný soubor vůbec ptát nemusel. Protože už jen ten samotný dotaz zdržuje, musí se navázat spojení, pokud se prohlížeč ptá na víc souborů ze stejného serveru, řadí se požadavky do fronty atd. Pět minut je velmi krátká doba, pokud bude uživatel číst trochu delší článek, koukat na video nebo prohlížet víc webů najednou, bude to trvat déle a cache se vůbec neuplatní. Pokud chcete, aby změny obsahu na jedné adresy viděl uživatel co nejdříve, je už pak lepší cachování úplně zakázat. Akorát že to popírá vaši úvodní tezi, že je lepší obsah cachovat.
Cachování se obvykle používá pro objekty, u kterých předpokládáte dlouhou životnost - stylopisy, obrázky pro styly, fotky atd. Tam nastavíte dlouhou dobu cachování, a pokud se obsah změní, změníte adresu objektu. Například do cesty zakomponujete verzi (ať už prostou rostoucí posloupnost čísel, nebo třeba datum), nebo verzi předáte jako parametr za otazníkem. Případně místo verze můžete použít náhodný řetězec, jak píše kolega, ale verze mi připadá přehlednější. Takže pak můžete mít např. některý z následujících odkazů:
Kód: [Vybrat]
http://www.example.com/styles/20141015/main.css
http://www.example.com/styles/main-20141015.css
http://www.example.com/styles/main.css?20141015

Re:Rada ohledně funkce Cache Web browseru a HTTP, Apache
« Odpověď #4 kdy: 15. 10. 2014, 10:23:47 »
Rok sa používa napríklad vtedy ak máš súbor, ktorý po aktualizácií bude mať inú adresu. Zväčša sa to robí tak, že máš adresu napríklad

http://example.com/assets/AABBCC/images/myimage.png
Nebo  http://example.com/images/myimage.png?v=1 -> http://example.com/images/myimage.png?v=2


fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re:Vhodné nastavení mod_expires
« Odpověď #5 kdy: 16. 10. 2014, 17:15:17 »
Děkuji za info,
a je tedy pravda toto?
"pokud zjistí browser že soubor nebyl modifikován, dále servíruje dalších 5 minut z cache a tak pořád dokola?"
v případě že Response header obsahuje Last-Modiffied:
Linux nováček - CeskeForum.com

Krysa1

Re:Vhodné nastavení mod_expires
« Odpověď #6 kdy: 16. 10. 2014, 17:29:39 »
Děkuji za info,
a je tedy pravda toto?
"pokud zjistí browser že soubor nebyl modifikován, dále servíruje dalších 5 minut z cache a tak pořád dokola?"
v případě že Response header obsahuje Last-Modiffied:
to je možná nastaveno v tom browseru?

Re:Vhodné nastavení mod_expires
« Odpověď #7 kdy: 16. 10. 2014, 17:54:57 »
"pokud zjistí browser že soubor nebyl modifikován, dále servíruje dalších 5 minut z cache a tak pořád dokola?"
v případě že Response header obsahuje Last-Modiffied:
Ne, to pravda není. Last-Modified říká, kdy byl soubor naposledy změněn. Na rozhodnutí, zda má prohlížeč kontaktovat server, tato hlavička nemá vliv - prohlížeč se serveru musí vždy zeptat, zda soubor nebyl od té doby změněn (samozřejmě pokud hlavička Expires neříká, že platnost souboru skončí později). Hlavička Last-Modified může ušetřit přenos souboru ze serveru do prohlížeče, protože prohlížeč pošle požadavek na server "pošli mi soubor ABC, pokud se změnil od data XY", kde XY je právě Last-Modified hlavička souboru uloženého v cache. Pokud se soubor nezměnil, server jej nemusí prohlížeči posílat, ale jenom pošle zprávu, že se soubor nezměnil. Ušetří se tedy přenos souboru, ale neušetří se navazování spojení a výměna požadavku a odpovědi.
Podobně funguje hlavička ETag, jen se v ní neposílá datum a čas poslední změny souboru, ale jednoznačný identifikátor verze souboru (který si musí server pamatovat a při změně souboru se musí změnit).