htaccess – przechowywanie plików w pamięci cache przeglądarki

  htaccess, Webhosting

Opisywane tu „cachowanie” stron oznacza zapisywanie plików stron w pamięci podręcznej przeglądarki – najczęściej na dysku twardym komputera. Dzięki temu nie ma potrzeby wczytywania wszystkich zasobów (tj. obrazki, JavaScripty, style CSS itp.) z serwera WWW, ale używana jest pamięć podręczna przeglądarki. Wczytywanie całej strony jest więc znacznie szybsze.

Zachowanie pamięci podręcznej można skonfigurować za pomocą odpowiednich nagłówków HTTP, indywidualnie lub według typu pliku.

W przypadku serwera WWW Apache (dostępnego na naszym webhostingu) możliwe jest ustawienie „cachowania” za pomocą modułu mod_expires przez dodanie odpowiednich reguł w pliku .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 to wartość wyrażana w sekundach, określająca czas przechowywania danego pliku w pamięci podręcznej. Po upływie tego czasu pliki zostają oznaczone jako wygasłe. Przy kolejnym wyświetleniu strony nastąpi ich ponowne pobranie.
  • ExpiresDefault to wartość definiująca maksymalny czas wczytywania pozostałych, niezdefiniowanych plików.
  • image/jpg to typ przechowywanego pliku

Alternatywną opcją jest użycie poniższej wersji, która nie tylko kompresuje, ale zapewnia cachowanie kolejnych plików.

Jeśli poniższy kod nie będzie działał z naszym plikiem .htaccess, przenieś stronę do katalogu domains/twoja_domena_koncowka, i umieść w nim .htaccess z poniższym kodem, lub innym kodem, który udostępnił Ci twórca strony.

Sprawdzone ustawienie .htaccess, które obejmuje kompresję:

# 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

Prawidłowe „cachowanie stron”, szybkość przetwarzania i inne kontrole możesz wykonać za pomocą następujących narzędzi:

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

i

http://www.webpagetest.org/