Background-image a mod_expires v MSIE podruhé
Když jsem včera zveřejnil návod na odstranění problikávání obrázků v MSIE, neuvědomil jsem si, že originální postup má jednu závažnou vadu. Podívejte se na to znovu:
ExpiresActive On ExpiresDefault A18000 ExpiresByType image/gif A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType image/png A2592000
Problém je v tom, že vše bude cachováno po dobu 18.000 sekund, tedy 5 hodin. A to pro rychle měnící se weby rozhodně není košer. Možnosti jsou dvě, buď snížit ExpiresDefault
z 5 hodin na třeba 1 minutu, popřípadě mod_expires
zapnout v .htaccess
jen pro potřebné věci, tedy obrázky, a případně CSS a JavaScript.
V tomto druhém případě jsem nastavil cache pro obrázky na 1 měsíc a CSS a JavaScript na 6 měsíců, zbytek není cacheován (respektive, je to ponecháno na nastavení browseru):
# set expires for imagesExpiresActive On ExpiresDefault A2592000 # set expires for CSS and JavaScriptExpiresActive On ExpiresDefault A15552000 # do not steal images SetEnvIfNoCase Referer "^http://hulan\.cz/" local_ref=1Order Allow,Deny Allow from env=local_ref
Toto řešení bude, na rozdíl od originálního, fungovat přesně tak, jak potřebujeme. Ve skriptu je doplněna i ochrana proti „kradení obrázků“ (linkování z cizích webů).
A co images.google.com?
zajímavá otázka ... jak na to budou reagovat indexovací stroje? :)
To je odchutávanie refferera. Indexovacie stroje to bez problémov zaindexujú, pretože ako referera (predpokladám) správne vkladajú url (pod)stránky na ktorej sa nachádzajú. Iné bude keď na obr. v google images bude odkaz. V tom prípade refferer bude google a to už nepustí.
Zajímalo by mně také, jestli intervaly 1 resp. 6 měsíců nejsou značně přehnané? Když mám obrázek, který se třeba za týden změní, tak je to problém, pokud mu zástane stejný název... Mám pravdu? Ještě horší situaci vidím u CSS, které se u udržovaného webu celkem často mění...
Ještě pro ty, které by to mohlo zajímat. Výše popsaný problém chyby MSIE 6 je bohužel zřejmě závislý také na operačním systému. Na XP/MSIE6 popsané řešení funguje, na 98/MSIE6 ne - zde obrázky i nadále blikají. Jak je tomu např. u w2k/MSIE6 bohužel nevím.