Wprowadzenie do buforowania HTTP

Jestem pewien, że zauważyłeś, że po otwarciu strony internetowej po raz pierwszy ładowanie zajmuje trochę czasu. Jednak gdy otworzysz go ponownie po pewnym czasie, witryna będzie znacznie szybsza. Wyobraź sobie, że ładowanie strony za każdym razem trwało tak samo, jak wolne byłoby przeglądanie. Wszystko to dzięki pomysłowemu pomysłowi o nazwie HTTP Caching. Rzućmy okiem na to, co to jest, jak to działa i jak jest używany, aby przeglądanie Internetu było szybsze.

Co to jest buforowanie HTTP?

Buforowanie HTTP polega na przechowywaniu niektórych często lub często używanych danych w łatwo dostępnym miejscu. Dzięki temu istnieje bardzo duża szansa, że ​​dostęp do najbardziej potrzebnych danych będzie znacznie szybszy, ponieważ komputer nie musi sięgać zbyt daleko, aby je uzyskać.

W przypadku przeglądania Internetu buforowanie jest brane pod uwagę, gdy przeglądarka internetowa, taka jak Chrome, przechowuje kopię witryny internetowej lub aplikacji internetowej w pamięci lokalnej. Po buforowaniu witryny przeglądarka nie będzie musiała ponownie pobierać wszystkich danych z serwera, co znacznie przyspieszy przeglądanie.

Na przykład po pobraniu pliku CSS witryny internetowej przeglądarka nie musi go pobierać dla każdej strony sesji. To samo można powiedzieć o wielu plikach JavaScript, obrazach (takich jak logo witryny i ikony mediów społecznościowych), a nawet o niektórych treściach dynamicznych. Buforowanie jest włączane za pomocą nagłówków pamięci podręcznej.

Nagłówki pamięci podręcznej w HTTP

Buforowanie HTTP ma dwa główne nagłówki pamięci podręcznej, pierwszy nazywa się „Kontrola pamięci podręcznej”, a drugi „Wygasa”. Rzućmy okiem na oba:

Kontrola pamięci podręcznej

Możesz rozważyć Cache-Control jako przełącznik do włączania buforowania w przeglądarce użytkownika. Po dodaniu tego nagłówka umożliwia buforowanie dla wszystkich obsługiwanych przeglądarek internetowych. Jeśli ten nagłówek nie jest obecny, żadna przeglądarka nie zachowa pamięci podręcznej zawartości strony internetowej, nawet jeśli obsługuje buforowanie.

Kontrola pamięci podręcznej ma dwa typy ustawień prywatności, pierwszy to Publiczny, a drugi Prywatny.

W przypadku Public zasoby mogą być buforowane przez dowolny pośredni serwer proxy, taki jak Content Delivery Networks (CDN).

Nagłówek Cache-Control z odpowiedzią prywatną powie przeglądarce, że buforowanie będzie wykonywane tylko dla jednego użytkownika, a nie dla pośredniego proxy.

Wartość „max-age” w nagłówku Cache-Control ustawia czas, przez który zawartość będzie buforowana. Ten czas jest w sekundach.

Cache-Control:public, max-age=31536000

Wygasa

Nagłówek Expires jest używany, gdy w kodzie znajduje się kontrola pamięci podręcznej. Jest to prosty nagłówek HTTP Cache, który określa datę, od której dowolny zasób pamięci podręcznej jest uważany za nieprawidłowy. Po wygaśnięciu pamięci podręcznej i załadowaniu witryny przez użytkownika przeglądarka internetowa po prostu ponownie zażąda całej zawartości strony.

Wnioski warunkowe

Powyżej omówione nagłówki po prostu mówią przeglądarce, kiedy należy pobrać dane z serwera WWW. Z drugiej strony, żądania warunkowe informują przeglądarkę, jak je odzyskać. Żądania warunkowe informują przeglądarkę, w jaki sposób mogą zapytać serwer, czy kopia danych w pamięci podręcznej jest nieaktualna.

W tym procesie przeglądarka wysyła niektóre dane o zasobach, które buforował do swojej pamięci, a po odczytaniu tych danych serwer decyduje, czy dane są nieaktualne, czy nie.

Zapytania czasowe

W żądaniach opartych na czasie sprawdzane jest, czy żądany zasób został zmieniony na serwerze, czy nie. Jeśli buforowana kopia w przeglądarce jest najnowsza, serwer zwróci kod 304.

Aby ustawić żądanie warunkowe na podstawie czasu, możesz użyć „Last-Modified” w nagłówku odpowiedzi.

Cache-Control:public, max-age=25998579
Last-Modified: Fri, 08 Jul 2018 15:25:00 GMT

Na podstawie treści

W żądaniach opartych na treści, skrót MD5 (lub jakakolwiek inna wykonalna opcja) jest sprawdzany zarówno dla kopii serwera, jak i dla pamięci podręcznej. Mówi to, czy dane są takie same, czy nie, w przypadku, gdy dane są różne, suma kontrolna MD5 nie będzie zgodna, a serwer wyśle ​​nową kopię zasobów.

Odbywa się to poprzez „ETag” w nagłówku. Jego wartością jest zestawienie zasobów.

Cache-Control:public, max-age=25998579
ETag: "496d7131f15f0fff99ed5aae”

Widoczność

Prawie wszystkie współczesne przeglądarki zawierają narzędzia związane z programowaniem, które pozwalają sprawdzać zasoby, kod źródłowy i inne aspekty strony internetowej. Wśród nich można znaleźć narzędzie do wyświetlania nagłówków zwracanych przez dowolną aplikację.

W przeglądarce Google Chrome, aby zobaczyć te nagłówki, możesz kliknąć prawym przyciskiem myszy dowolny pusty obszar strony internetowej i kliknąć „Sprawdź” lub nacisnąć CTRL + SHIFT + I, aby otworzyć DevTools. W tym narzędziu kliknij kartę Sieć i naciśnij CRTL + R, aby ponownie załadować i zobaczyć wszystkie nagłówki strony.

Użyj przypadków w buforowaniu HTTP

Poniżej przedstawiono niektóre przypadki użycia buforowania HTTP, które są następujące:

Dla aktywów statycznych

W przypadku statycznych zasobów strony, takich jak obrazy, pliki JS i dowolne pliki CSS, możesz zdecydować się na agresywne buforowanie zawartości. Brak konieczności ładowania tych plików spowoduje imponującą poprawę wydajności. W tym przypadku użycia wybierz nagłówek Cache-Control z wartością maksymalnego wieku większą niż miesiąc lub nawet rok.

Cache-Control:public; max-age=31536000

Dla zawartości dynamicznej

W przypadku dynamicznej zawartości strony musisz pomyśleć o tym, jakie pliki powinny być buforowane w przeglądarce i jak długo. W przypadku częstej zmiany treści należy upewnić się, że czas wybrany do buforowania nie spowoduje żadnych problemów dla użytkownika.

Buforowanie treści prywatnych

Jak omówiliśmy w sekcji Kontrola pamięci podręcznej, w przypadku, gdy zawartość strony ma charakter prywatny, możesz zapobiec buforowaniu jej przez pośredniczące serwery proxy, takie jak CDN, dodając „Cache-Control: prywatny” w nagłówku.

Innym bezpieczniejszym podejściem jest nie buforowanie żadnych prywatnych treści.

Implementowanie buforowania HTTP

Teraz, gdy wiesz, co to jest buforowanie HTTP i jak to działa, przyjrzyjmy się, jak możesz zaimplementować go w swojej witrynie. Implementacja buforowania HTTP jest nieco inna dla różnych typów serwerów. W naszym przypadku przyjrzyjmy się implementacji buforowania za pomocą pliku .htaccess.

Aby włączyć buforowanie na stronie, możesz dodać nagłówki w pliku .htaccess na serwerze, na przykład:

FilesMatch "\.(ico|pdf|flv|jpg.webp|jpeg.webp|png|gif|js|css|swf)$"
Header set Cache-Control "max-age=31536000, public"
/FilesMatch

Powyższe będzie buforować wszystkie, pdf, flv, jpg.webp i inne wymienione formaty wymienione w „File Match” przez jeden rok.

Wniosek

Buforowanie HTTP jest jedną z najważniejszych sztuczek, które sprawiają, że przeglądanie witryny jest szybsze dla odwiedzających, a teraz, gdy widzisz, jak to działa, możesz zaimplementować ją w swoich witrynach i aplikacjach internetowych, aby przyspieszyć je dla użytkowników i do oszczędzania przepustowości serwera.

Polecane artykuły

To był przewodnik po buforowaniu HTTP. Tutaj omówiliśmy implementację, żądania warunkowe, nagłówek pamięci podręcznej i przypadki użycia HTTP. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Dowiedz się, co to HTML
  2. Jak zainstalować Github?
  3. Co to jest MapReduce w Hadoop?
  4. Przewodnik dla początkujących po poleceniach węzłów
  5. Pliki cookie HTTP | Bezpieczeństwo