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 images

	ExpiresActive On
	ExpiresDefault A2592000


# set expires for CSS and JavaScript

	ExpiresActive On
	ExpiresDefault A15552000


# do not steal images
SetEnvIfNoCase Referer "^http://hulan\.cz/" local_ref=1

	Order 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ů).

Komentáře 5

  1. #1 halogan

    A co images.google.com?

  2. #2 Frettie

    zajímavá otázka ... jak na to budou reagovat indexovací stroje? 🙂

  3. #3 Roman

    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í.

  4. #4 kruxi

    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í...

  5. #5 kruxi

    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.