3. Rodzaje Cache’u
Przyjmijmy że Cache === Pamięć podręczna
Browser Cache Proxy/Gateway Cache
Dane składowane po stronie
przeglądarki/użytkownika.
Najczęściej widoczne po kliknięciu przycisku
wstecz lub kolejnym wyświetleniu
poprzednio odwiedzanej strony.
Nie współdzielone z innymi użytkownikami
Dane przechowywane w pamięci specjalnej
aplikacji umiejscowionej pomiędzy
użytkownikiem a serwerem.
Często nazywane również “reverse proxy
caches” lub “surrogate caches”
Współdzielone z innymi użytkownikami
5. Bezpieczne Metody
HTTP Cache działa tylko z “bezpiecznymi” metodami jak : GET, HEAD
● Nie próbuj zapisywać do pamięci podręcznej żądań wysyłanymi metodami
PUT, POST czy DELETE. Te metody są przeznaczone do zmiany stanu twojej
aplikacji (np. usuwanie wpisu na blogu). Zapisywanie ich w pamięci
podręcznej mogłoby spowodować nieprawidłowe działanie twojej
aplikacji.
● Nie powinieneś nigdy zmieniać stanu swoje aplikacji (np. zmieniać lub
usuwać wpis na blogu) poprzez żądania metodami GET lub HEAD. Jeśli
żądania tymi metodami będą zapisywane do pamięci podręcznej to mogą
nigdy nie dotrzeć do twojego serwera.
6. Jak zezwolić na “cachowanie”
twoich odpowiedzi?
HTTP określa cztery nagłówki (cache) odpowiedzi których
możesz użyć żeby aktywować “cachowanie”.
● Cache-Control (PUBLIC | PRIVATE | NO-CACHE | NO-STORE) -
więcej: http://bit.ly/mdn-cache-control
● Expires (Fri, 30 Oct 1998 14:19:41 GMT)
● ETag (33a64df551425fcc55e4d42a148795d9f25f89d4)
● Last-Modified (Wed, 15 Nov 1995 04:58:08 GMT)
7. Great caching is like great sex.
It hides all the real problems.
Vivek Haldar
8. Say hello to Varnish
Varnish jest akceleratorem HTTP, pracującym w trybie reverse proxy (czyli przy serwerze www).
Jego działanie opiera się na cache, storage typu klucz/wartość, w którym trzymany jest kod
wygenerowany i zaserwowany przez serwer www obsługujący daną aplikację webową. Kluczem
obiektów w cache zazwyczaj jest adres URL. Źródło: http://www.unity.pl/na-blogu/varnish/
10. Cache Invalidation in Varnish
● Żądanie PURGE prosi Varnisha o usunięcie danego zasobu wraz z wszystkimi jego wariantami
zapisanymi w nagłówku (Vary). Alternatywnym podejściem jest ignorowanie nagłówka Vary i
odświeżanie zasobu przy żądaniu PURGE (Varnish czyści swój cache i automatycznie pobiera nową
kopię z serwera).
W wielu aplikacjach ta sama treść jest używana na wieli różnych stronach o różnych adresach URL. Dla takich
przypadków istnieją bardziej elastyczne rozwiązania:
● Banowanie (BAN) - usuwa zasoby pasujące do wyrażenia regularnego lub innych kryteriów.
● Tagowanie - umożliwia oznaczenie każdego zasobu wybranym tagiem i czyszczenie wszystkich
zasobów oznaczonych tym tagiem.
14. Edge Side Includes jest językiem który pozwala na
załączanie fragmentów strony w treści innych stron.
Można myśleć o tym jako o HTML’owej wersji include
która działa w HTTP.
W większości stron www dużo treści jest współdzielone
pomiędzy stronami. Generowanie tej treści dla każdej z
nich to marnotrawstwo zasobów i ESI próbuje
zniwelować ten problem pozwalając na ustawianie
polityki cache dla tych fragmentów indywidualnie.
16. HTTP/2 Server Push
Server push pozwala na wysłanie zasobów do użytkownika zanim
przeglądarka o nie zapyta.
Przykładowe użycia:
● Wysyłanie plików css i js wymaganych do pierwszego wyświetlanie
strony
● Wysyłanie pełnych zawartości stron (np. z boksów “podobne
artykuły”).
17.
18.
19. Must Read
RFC 2616 http://tools.ietf.org/html/rfc2616
HTTP caching: – http://tools.ietf.org/html/rfc2616#section-13