Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Http cache - kiedy/dlaczego/jak

280 views

Published on

HTTP Cache to najważniejsza warstwa cache w twojej aplikacji i najczęściej pomijana. Prezentacja o podstawach.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Http cache - kiedy/dlaczego/jak

  1. 1. HTTP Cache - why / when / how ? Paweł Mikołajczuk, Biała Podlaska 20.04.2017
  2. 2. The least expensive query is the query you never run
  3. 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
  4. 4. Browser Cache Proxy/Gateway Cache
  5. 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. 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. 7. Great caching is like great sex. It hides all the real problems. Vivek Haldar
  8. 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. 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. 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. 11. Co z dynamicznymi elementami na stronie? ESI (Edge Side Includes)
  12. 12. 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.
  13. 13. There is just ONE MORE THING
  14. 14. 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”).
  15. 15. Must Read RFC 2616 http://tools.ietf.org/html/rfc2616 HTTP caching: – http://tools.ietf.org/html/rfc2616#section-13

×