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 hodnotav 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 AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rdf+xml AddOutputFilterByType DEFLATE application/rss+xml # 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ů:
a