Expires – pozwól przeglądarkom przechowywać stronę w pamięci podręcznej

Pamięć podręczna jest jednym ze sposobów przyspieszania wydajności strony. Polega ona na przechowywaniu na komputerze użytkownika fragmentów strony, które pozostają niezmienne przez długi czas i nie ma potrzeby każdorazowo ich pobierać. Dzięki temu znacząco zmniejsza się obciążenie łącza internetowego podczas przeglądania kolejnych podstron serwisu. Serwer musi jednak pozwolić przeglądarce na przechowywanie tych informacji.

Jak to działa?

Serwer WWW na każde otrzymane żądanie wysyła odpowiedź. Odpowiedź można podzielić na dwie części:

  • Nagłówek odpowiedzi – zawiera wszelkie informacje na temat wyniku żądania, np. czy się powiodło, jaki jest rodzaj zwracanej zawartości itp.
  • Zawartość odpowiedzi – zawartość, o którą było pytanie, np. kod strony internetowej, obraz, styl CSS.

Informację o tym, czy, i co istotne, na jak długo można przechowywać pamięć podręczną, znajduje się właśnie w nagłówku odpowiedzi serwera. #wiemyjak

Jakich nagłówków potrzebujsz?

Nie będziemy tutaj omawiać wszystkich możliwości ustawiania nagłówków Cache-control i Expires, ponieważ opcji ustawienia tych parametrów jest bardzo dużo. Nie skupiamy się na wszystkich możliwościach konfiguracyjnych jakie nam przynoszą, a na tym, żeby strona była odpowiednio „cache-owana”. Podamy tylko najbardziej typowe przykłady dla najpopularniejszych serwerów HTTP.

Jakiego serwera używasz i jaka to różnica?

To właśnie serwer odpowiada za wstawienie odpowiednich nagłówków. Jeśli korzystamy z gotowego rozwiązania serwerowego (a zazwyczaj tak jest), to wystarczy kilku liniowa konfiguracja. Konfiguracja może być różna w zależności od tego jaki to serwer.

Często serwer HTTP przedstawia się w nagłówku. Wystarczy wysłać zapytanie i sprawdzić nagłówki odpowiedzi. Przykładowy sposób:

Na stronie http://web-sniffer.net/ wpisujemy adres strony. Otrzymujemy tabelkę:

expires tabelka

Apache

Apache to najpopularniejszy serwer WWW. Jego konfigurację można nadpisywać w pliku .htaccess znajdującym się w katalogu głównym strony. Serwer musi mieć uruchomiony moduł mod_expires.

Przykładowa zawartość .htaccess:

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpg "access plus 1 year"
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/gif "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType application/pdf "access plus 1 month"
  ExpiresByType text/x-javascript "access plus 1 month"
  ExpiresByType text/javascript "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
  ExpiresByType image/x-icon "access plus 1 year"
  ExpiresDefault "access plus 2 days"
</IfModule>

Warunek <ifmodule> zapewnia, że wpisy konfiguracji zostaną ustawione tylko kiedy aktywny jest moduł mod_expires.c. Zapobiegnie to ewentualnemu błędowi.

Wpis ExpiresByType określa jak długo plik może być przechowywany. W powyższym przykładzie obraz JPG przez rok, a plik CSS przez miesiąc od pobrania. Skutkuje to dodaniem nagłówków do odpowiedzi na zapytania o te rodzaje plików.

Expires: Thu, 09 Jun 2016 08:26:01 GMT
Cache-Control: max-age=2592000

NGINX

W przypadku tego serwera może być różnie. Czasami potrzebne jest skonfigurowanie serwera z poziomu administratora gdyż w domyśle NGINX nie wykorzystuje pliku .htaccess.

Przykład konfiguracji tworzonej z poziomu administratora – wpisy powinny znaleźć się wewnątrz konfiguracji Virtual Hosta.

location ~* \.(png|jpg|jpeg|gif|ico)$ {
expires 1y;
log_not_found off;
}

location ~* \.(js|css)$ {
expires 30d;
log_not_found off;
}

Po dodaniu konieczny jest restart usługi „nginx”.

Jeśli nie masz dostępu do konfiguracji serwera, a twoje zasoby nie mają ustawionych stosownych nagłówków, skontaktuj się z administratorem.

IdeaWebServer

Jest to autorski serwer Home.pl – jest w dużej mierze zgodny z Apache, ale nie do końca.

Konfiguracja umieszczana jest w .htaccess

:Location *.(gif|jpg|jpeg|png)
Expires A31536000
:Location

:Location *.(js|css)
Expires A2592000
:Location

I tutaj również dla obrazów wartość jest ustawiona na rok, a dla plików CSS i JavaScript na miesiąc.

Podsumowanie

Niezależnie od tego jaki serwer jest używany, aby strona była przechowywana w pamięci podręcznej przeglądarki, dążymy do tego, aby zasoby, które chcemy przechowywać były zwracane z nagłówkami Expires oraz Cache-control.

11/05/2016
Dominik Klementowski

Udostępnij:

x

ZAMÓW bezpłatną WYCENĘ

Filtr antyspamowy

Podanie imienia i nazwiska jest dobrowolne, natomiast podanie numeru telefonu i adresu e-mail jest niezbędne do obsługi zapytania. Państwa dane będą przetwarzane w celu obsługi wysłanego zapytania i tak długo, jak to konieczne do obsługi tego zapytania. Mają Państwo prawo do dostępu do swoich danych, ich sprostowania, usunięcia, ograniczenia przetwarzania, wniesienia sprzeciwu wobec przetwarzania oraz przeniesienia danych. Wysłane zapytanie obsługiwane jest przez EACTIVE wiemy jak sp. z o.o. sp. k.

* Pole wymagane

#wiemyjak

Komentarze

*

*

*

Zasady komentowania

  1. Gdy dodajesz komentarz, pamiętaj, aby:
    1. Komentarze podpisywać imieniem i/lub nazwiskiem.
    2. W polu „witryna internetowa” umieszczać link tylko do strony głównej.
  2. Wszystkie komentarze są moderowane i zastrzegamy sobie prawo do usunięcia lub edytowania wpisu/ komentarza, który:
    1. zawiera wulgaryzmy,
    2. obraża innych użytkowników,
    3. może być uznany za spam – lub ma charakter reklamowy,
    4. nie pasuje tematycznie do wpisu, nie zawiera treści merytorycznej,
    5. zawiera linki do stron, które naruszają prawo polskie.

Znajdź nas na Facebooku
Eactive - wiemy jak Lubię to