htaccess - cachování souborů v prohlížeči

Návod na nastavení ukládání statických souborů webu do mezipaměti prohlížeče pro rychlejší načítání stránek

Datum: 14.11.2012


Zde popisované cachování stránek je ukládání souborů stránek do mezipaměti prohlížeče - nejčastěji na lokální pevný disk počítače. Nedochází pak k načítaní všech zdrojů z WWW serveru (obrázky, JavaScripty, CSS styly atd.), ale využije se mezipamět prohlížeče. Načítání celé stránky tak může být výrazně rychlejší.

Chování mezipaměti prohlížeče lze ovlivnit pomocí příslušných HTTP hlaviček buď jednotlivě nebo podle typů souborů.

U webserveru Apache (tedy u nás na webhostingu) je jednou z možností cachování nastavit pomocí modulu mod_expires zápisem příslušných pravidel do souboru .htaccess.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A600
ExpiresByType text/javascript A604800
ExpiresByType application/javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/x-icon A604800
ExpiresByType text/html A60
</IfModule>
  • A31536000 je hodnota v sekundách udávající dobu po jakou se má uchovávat v mezipaměti prohlížeče daný soubor. Po vypršení této hodnoty se soubory označí jako expirovaný a při dalším načtení stránky se stáhnou soubory znovu. 
  • ExpiresDefault je hodnota ostatních nedefinovaných souborů a nastavení jejich doby max. načtení.
  • image/jpg je typ cachovaného souboru, zde si zvolíte dle php typ souboru, které chcete cachovat. 

 

Jako alternativní řešení ještě můžete použít následující verzi. Tato verze dělá nejen kompresi, ale zajišťuje cachování další souborů. 

 V případě, že tento kód nebude fungovat s naším htaccess, tak dejte web do adresáře domains/vase_domena_koncovka a dejte .htaccess s tímto kódem a případně jiným dalším, který máte od výrobce webu.

Osvědčené nastavení .htaccess, které je včetně komprese:


# BEGIN Compress text files
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE \
 text/html \
 text/xml \
 text/css \
 text/plain \
 image/svg+xml \
 application/xhtml+xml \
 application/xml \
 application/rdf+xml \
 application/rss+xml \
 application/atom+xml \
 text/javascript \
 text/ecmascript \
 application/javascript \
 application/x-javascript \
 application/ecmascript \
 application/json \
 application/x-font-ttf \
 application/x-font-otf \
 font/truetype \
 font/opentype \
 application/x-pointplus
</ifModule>
# END Compress text files

# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/jpg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
ExpiresByType text/html "access plus 604800 seconds"
ExpiresByType application/xhtml+xml "access plus 604800 seconds"
</ifModule>
# END Expire headers

# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, max-age=360, must-revalidate"
</filesMatch>
</ifModule>
# END Cache-Control Headers

# BEGIN Turn ETags Off
Header unset Pragma
FileETag None
Header unset ETag
# END Turn ETags Off
 

 

Správné cachování stránek, rychlost zpracování a další testy můžete vyzkoušet pomocí nástrojů:

http://tools.pingdom.com/fpt/

a

http://www.webpagetest.org/

Diskuze k článku (4)

Lze pouzit i pro weby na Joomle atd.?Radek21.02.13 07:26
  Re: Lze pouzit i pro weby na Joomle atd.?Jan Jurík, WEDOS21.02.13 09:36
  Re: Lze pouzit i pro weby na Joomle atd.?Marek Tesař11.03.13 22:42
    Re: Lze pouzit i pro weby na Joomle atd.?Jiří Lipina11.03.13 22:51

Přihlášení zákazníka

Nemáte ještě zákaznický účet? Registrace

Copyright © WEDOS, 2017

Facebook RSS