Pamięć podręczna (ang. cache)
Caching stron WWW to zachowywanie i ponowne używanie plików pobranych z Sieci. Za każdym razem, gdy użytkownik zażąda wyświetlenia strony WWW (lub obrazka na niej, itp.) przeglądarka sprawdza, czy ma lokalną kopię, którą może użyć zamiast pobierać cały plik z Internetu.
Niestety bardzo trudno jest w pełni wykorzystać caching. Wiele przeglądarek obsługuje go częściowo i/lub niepoprawnie, a w popularnych środowiskach do generowania stron (PHP, ASP) jest on olewany lub używany nieprawidłowo.
Co zyskujesz dzięki cachingowi?
- Prędkość działania stron.
Jak szybkie by nie były łącza, nieściąganie pliku będzie zawsze szybsze niż ściąganie. - Nie generujesz zbędnego ruchu w Internecie.
Limity transferu nękają zarówno twórców stron, jak i użytkowników.
Caching u dostawcy internetowego pozwala mu obniżyć koszty i przyśpieszyć działanie popularnych stron WWW.
Jakie są skutki źle używanego cache?
Póki jest używany prawidłowo, nie powinien stwarzać żadnych problemów, ale gdy nie wyśle się odpowiednich nagłówków (lub wyśle błędne), to:
- Użytkownik może zobaczyć nieaktualną wersję strony
- Odnośniki mające wykonać jakąś akcję, mogą być zignorowane (należy używać metody POST)
- Użytkownik dostać kopię strony spersonalizowaną dla kogoś innego lub wygenerowaną dla innej przeglądarki (należy wysyłać nagłówek
Vary
lubCache-Control:private
)
Czas świeżości: Cache-Control: max-age=ilość sekund
Określa ile czasu (w sekundach) plik może leżeć w cache.
W starszej wersji protokołu HTTP podobny efekt uzyskiwało się podając datę ważności w nagłówku Expires
, ale ze względu na rozsynchronizowane zegarki i błędnie poustawiane strefy czasowe
mógł on być niedokładnie zinterpretowany.
Data ostatniej modyfikacji: Last-Modified
Określa kiedy ostatnio plik został zmodyfikowany. W przypadku braku max-age
przeglądarki na tej podstawie zgadują jak często zmienia się plik.
Last-Modified
może być również użyty do zapytań warunkowych.
<?php header('Last-Modified: '.gmdate(DATE_RFC1123,$time));
Zapytanie warunkowe wg daty: If-Modified-Since
W tym nagłówku przeglądarka wysyła datę modyfikacji pliku, którą dostała przy ostatnim jego pobraniu i pozwala serwerowi sprawdzić, czy plik został zmieniony od tego czasu.
Jeśli plik zmienił się, to normalnie wysyłana jest jego nowa wersja, z nową datą w Last-Modified
.
Jeśli plik nie zmienił się, to wysyłany jest tylko status 304 (Not Modified) i zawartość pliku nie jest (i nie może być) wysłana.
Wspominać o Etag? Ktoś tego używa...?
Pytania? Komentarze? Napisz na forum kursu lub edytuj tę stronę.
Zmodyfikowano: 10.11.2006, 17:12