SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
HTTP Cache -
why / when / how ?
Paweł Mikołajczuk, Biała Podlaska 20.04.2017
The least expensive query
is the query you never run
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
Browser Cache Proxy/Gateway Cache
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.
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)
Great caching is like great sex.
It hides all the real problems.
Vivek Haldar
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/
Cache Invalidation
Czyszczenie pamięci podręcznej
There are only two hard things in
Computer Science:
cache invalidation and naming things.
Phil Karlton
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.
Co z dynamicznymi
elementami na stronie?
ESI (Edge Side Includes)
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.
There is just
ONE MORE THING
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”).
Must Read
RFC 2616 http://tools.ietf.org/html/rfc2616
HTTP caching: – http://tools.ietf.org/html/rfc2616#section-13

Weitere ähnliche Inhalte

Ähnlich wie Http cache - kiedy/dlaczego/jak

W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaBartosz Romanowski
 
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaTomasz Dziuda
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaTomasz Dziuda
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychAntoni Orfin
 
Pamięć wirtualna oraz pamięć cache
Pamięć wirtualna oraz pamięć cachePamięć wirtualna oraz pamięć cache
Pamięć wirtualna oraz pamięć cacheBorek12345
 
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...Lukasz Wilczak
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówArkadiusz Stęplowski
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Wojciech Klocek
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Droptica
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Logicaltrust pl
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETBartlomiej Zass
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 

Ähnlich wie Http cache - kiedy/dlaczego/jak (20)

W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
 
Motywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia PrawdziwaMotywy Wordpressa Historia Prawdziwa
Motywy Wordpressa Historia Prawdziwa
 
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp WarszawaMotywy dla WordPressa - historia prawdziwa - WordUp Warszawa
Motywy dla WordPressa - historia prawdziwa - WordUp Warszawa
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
Varnish-Cache
Varnish-CacheVarnish-Cache
Varnish-Cache
 
Varnish cache
Varnish cacheVarnish cache
Varnish cache
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danychProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych
 
Pamięć wirtualna oraz pamięć cache
Pamięć wirtualna oraz pamięć cachePamięć wirtualna oraz pamięć cache
Pamięć wirtualna oraz pamięć cache
 
HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
 
Potęga pliku .htaccess
Potęga pliku .htaccessPotęga pliku .htaccess
Potęga pliku .htaccess
 
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...Bezpieczna i szybka strona statyczna  z funkcjonalnością Wordpressa. Czy to m...
Bezpieczna i szybka strona statyczna z funkcjonalnością Wordpressa. Czy to m...
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!Zabezpiecz swoją stronę w Joomla!
Zabezpiecz swoją stronę w Joomla!
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
Drupal multisite i domain access - kiedy, jak i dlaczego [PL]
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
 
Optymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NETOptymalizacja aplikacji ASP.NET
Optymalizacja aplikacji ASP.NET
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 

Http cache - kiedy/dlaczego/jak

  • 1. HTTP Cache - why / when / how ? Paweł Mikołajczuk, Biała Podlaska 20.04.2017
  • 2. The least expensive query is the query you never run
  • 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/
  • 9. Cache Invalidation Czyszczenie pamięci podręcznej There are only two hard things in Computer Science: cache invalidation and naming things. Phil Karlton
  • 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.
  • 11. Co z dynamicznymi elementami na stronie? ESI (Edge Side Includes)
  • 12.
  • 13.
  • 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.
  • 15. There is just ONE MORE THING
  • 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