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?

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:

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)zawartość pliku nie jest (i nie może być) wysłana.

Wspominać o Etag? Ktoś tego używa...?


Zmodyfikowano: 10.11.2006, 08:12
submit