Hej tam! Jako dostawca Varnish widziałem na własne oczy, jak ustawienie nagłówków buforowania HTTP w Varnish VCL może zmienić zasady gry w zakresie wydajności witryny. Na tym blogu przeprowadzę Cię przez ten proces krok po kroku.
Na początek zrozummy, dlaczego nagłówki buforujące HTTP są tak ważne. Gdy użytkownik odwiedza witrynę, przeglądarka żąda z serwera zasobów, takich jak HTML, CSS, JavaScript i obrazy. Bez odpowiedniego buforowania serwer musi za każdym razem przetwarzać te żądania, co może spowolnić działanie witryny, szczególnie w okresach dużego ruchu. Nagłówki buforowania HTTP informują przeglądarkę i inne pośrednie pamięci podręczne (takie jak Varnish), jak długo mogą przechowywać określony zasób i wykorzystywać go ponownie bez konieczności powrotu do serwera.


Podstawy lakieru VCL
Język konfiguracji lakieru (VCL) służy do kontrolowania zachowania programu Varnish. To jak zbiór zasad, których Varnish przestrzega podczas obsługi żądań i odpowiedzi. W VCL jest kilka kluczowych podprogramów, na których skupimy się przy ustawianiu nagłówków buforowania:vcl_recv,vcl_backend_response, Ivcl_dostarczanie.
vcl_recv
Thevcl_recvpodprogram jest wywoływany, gdy Varnish otrzymuje żądanie od klienta (zwykle przeglądarki). Jest to świetne miejsce na podjęcie decyzji o buforowaniu żądania lub nie. Możesz na przykład wykluczyć określone typy żądań, np. dotyczące treści dynamicznych, które często się zmieniają.
sub vcl_recv { # Nie buforuj żądań POST if (req.method == "POST") { return (pass); } # Możesz tutaj dodać więcej warunków w oparciu o wzorce adresów URL if (req.url ~ "^/admin/") { return (pass); } }
W tym kodzie mówimy, aby Varnish nie buforował żądań POST, ponieważ zazwyczaj obejmują one przesłanie formularza i prawdopodobnie mają charakter dynamiczny. Wykluczamy także żądania zaczynające się od/administrator/ponieważ prawdopodobnie dotyczą obszaru administracyjnego witryny zawierającej zawartość dynamiczną.
vcl_backend_response
Thevcl_backend_responsepodprogram jest wywoływany, gdy Varnish otrzymuje odpowiedź z serwera zaplecza. Tutaj możemy ustawić lub zmodyfikować nagłówki buforowania.
sub vcl_backend_response { # Ustaw domyślny czas pamięci podręcznej dla wszystkich odpowiedzi. set beresp.ttl = 3600s; # Możesz ustawić różne czasy pamięci podręcznej w zależności od typu zawartości if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Dodaj niestandardową pamięć podręczną - zestaw nagłówków kontrolnych beresp.http.Cache - Control = "public, max - wiek=3600"; }
Tutaj ustawiamy domyślny czas do wygaśnięcia (TTL) wynoszący 3600 sekund (1 godzina) dla wszystkich odpowiedzi. W przypadku treści HTML zmniejszamy TTL do 1800 sekund (30 minut), ponieważ kod HTML może zmieniać się częściej. Dodajemy takżePamięć podręczna - kontrolanagłówek, który jest standardowym nagłówkiem HTTP, który informuje przeglądarkę i inne pamięci podręczne, jak obsługiwać zasób.
vcl_dostarczanie
Thevcl_dostarczaniepodprogram jest wywoływany tuż przed wysłaniem odpowiedzi przez Varnish do klienta. Możesz tego użyć, aby dodać lub zmodyfikować nagłówki widoczne dla klienta.
sub vcl_deliver { # Dodaj niestandardowy nagłówek wskazujący, że odpowiedź jest buforowana przez zestaw Varnish lub http.X - Cached - By = "Varnish"; }
W tym przykładzie dodajemy niestandardowy nagłówekX — w pamięci podręcznej — przezaby poinformować klienta, że odpowiedź została zapisana w pamięci podręcznej przez Varnish.
Zaawansowane scenariusze buforowania
Przyjrzyjmy się bardziej zaawansowanym scenariuszom ustawiania nagłówków buforowania.
Kasowanie pamięci podręcznej
Czasami chcesz zmusić przeglądarkę do pobrania nowej wersji zasobu, nawet jeśli nadal mieści się w pamięci podręcznej. Można to zrobić, dołączając numer wersji lub skrót do adresu URL zasobu. W VCL możesz sobie z tym poradzić, usuwając numer wersji z adresu URL przed przekazaniem go do backendu.
sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { set req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); } }
Ten kod usuwa?v=123część z adresu URL, więc Varnish może buforować zasób w oparciu o oryginalny adres URL bez numeru wersji.
Buforowanie warunkowe
Możesz chcieć buforować zasób tylko wtedy, gdy spełnione są określone warunki. Na przykład możesz buforować stronę tylko wtedy, gdy ma ona określony kod stanu HTTP.
sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s; set beresp.http.Cache - Control = "publiczny, maks. - wiek=3600"; } else { ustaw beresp.ttl = 0s; set beresp.http.Cache - Control = "nie - pamięć podręczna"; } }
W tym przypadku buforujemy pomyślne odpowiedzi (kod stanu 200) przez godzinę, ale nie buforujemy innych odpowiedzi.
Korzystanie z naszych produktów lakierniczych
W naszej firmie oferujemy szeroką gamę produktów związanych z Varnish, które mogą jeszcze bardziej ułatwić konfigurowanie i zarządzanie nagłówkami buforującymi HTTP. Na przykład naszMatowy lakier nawierzchniowy na bazie wodyto świetna opcja dla witryn internetowych, które oczekują gładkiego, matowego wykończenia, a jednocześnie korzystają ze zoptymalizowanego buforowania. Zawiera wstępnie skonfigurowane szablony VCL, które można łatwo dostosować do własnych potrzeb.
NaszPołysk poliuretanu na bazie wodyto kolejny doskonały wybór. Zapewnia wysoki połysk i wbudowane zaawansowane funkcje buforowania. Można go używać do buforowania różnych typów zasobów z różnymi czasami buforowania, w zależności od wymagań.
A jeśli szukasz rozwiązania o bardziej ogólnym przeznaczeniu, naszeLakier bezbarwny na bazie wodyto świetna opcja. Oferuje przejrzystą warstwę ochronną dla zasobów Twojej witryny i pomaga w skonfigurowaniu wydajnych nagłówków buforowania.
Skontaktuj się z nami w sprawie zakupu
Jeśli chcesz dowiedzieć się więcej o naszych produktach Varnish lub potrzebujesz pomocy przy konfigurowaniu nagłówków buforujących HTTP w Varnish VCL, nie wahaj się z nami skontaktować. Mamy zespół ekspertów, który może przeprowadzić Cię przez cały proces i pomóc w maksymalnym wykorzystaniu konfiguracji pamięci podręcznej. Niezależnie od tego, czy prowadzisz małą firmę z prostą witryną internetową, czy duże przedsiębiorstwo o złożonych potrzebach w zakresie pamięci podręcznej, mamy wszystko, czego potrzebujesz.
Referencje
- Dokumentacja lakieru
- Buforowanie HTTP RFC (RFC 7234)
Więc masz to! Ustawianie nagłówków buforowania HTTP w Varnish VCL może na początku wydawać się nieco skomplikowane, ale dzięki odpowiedniej wiedzy i naszym produktom możesz zoptymalizować wydajność swojej witryny i zapewnić lepsze doświadczenia użytkownikom.
