Brak pamięci podręcznej i trafienie do pamięci podręcznej: kiedy się pojawiają (i jak zwiększyć współczynnik trafień do pamięci podręcznej)

Opublikowany: 2022-05-04

Optymalizacja wydajności witryny bez solidnej polityki buforowania jest jak próba budowania domu na ruchomych piaskach.

Możesz użyć najlepszych materiałów i narzędzi, ale kiedy twój fundament nie jest solidny, zawsze będziesz czuł, że coś hamuje twoje postępy.

Twoja polityka buforowania jest podstawą wyjątkowej wydajności Twojej witryny. Jeśli masz odpowiedni system buforowania, możesz drastycznie poprawić szybkość swojej witryny.

I odwrotnie, bez dobrej działającej konfiguracji pamięci podręcznej żądania odwiedzających doprowadzą do chybień w pamięci podręcznej, co z kolei spowolni czas ładowania strony.

A brak pamięci podręcznej to tylko jeden z tematów, które zostaną omówione w następujących wierszach wraz z:

  • Krótkie wprowadzenie do buforowania;
  • Co to jest brak pamięci podręcznej?;
  • Co to jest trafienie w pamięci podręcznej?;
  • Co to jest współczynnik trafień w pamięci podręcznej i jak go obliczyć?;
  • Jaki jest dobry współczynnik trafień w pamięci podręcznej?;
  • Jak zwiększyć współczynnik trafień w zasobniki?;
  • NitroPack - najprostszy sposób na osiągnięcie doskonałego Cache Hit Ratio.

Zaczynajmy!

Krótkie wprowadzenie do buforowania

Zanim zagłębisz się w świat trafień i chybień w pamięci podręcznej, konieczne jest zrozumienie, jak działa pamięć podręczna, jakiemu celowi służy i dlaczego jest uważana za najlepszą strategię optymalizacji szybkości.

Aby zrozumieć pamięć podręczną, musimy cofnąć się o krok i prześledzić cały proces, który odbywa się za kulisami, gdy odwiedzający odwiedza witrynę.

Twoja witryna składa się z dokumentów HTML, plików JavaScript i CSS, obrazów itp. Wszystkie są przechowywane na serwerze pochodzenia. Gdy ktoś chce odwiedzić Twoją witrynę, jego przeglądarka wysyła żądanie do serwera pochodzenia, który z kolei odsyła odpowiedź ze wszystkimi niezbędnymi plikami.

Jak działa sieć

Kiedy masz 10 odwiedzających, którzy jednocześnie żądają plików Twojej witryny, nie powinno być problemu, a Twój serwer może sobie z nimi dość łatwo obsłużyć.

Jednak ten model nie działa, gdy 100 000 odwiedzających chce odwiedzić Twoją witrynę.

Serwery mają limit liczby żądań, które mogą obsłużyć jednocześnie, a każde żądanie po tym limicie trafia do kolejki, co powoduje dłuższy czas ładowania dla odwiedzających.

Kolejka

Tu właśnie pojawia się buforowanie.

Krótko mówiąc, buforowanie to proces zapisywania kopii danych witryny (HTML, CSS, JS, obrazy itp.) w innej lokalizacji zwanej pamięcią podręczną sieci Web.

Pamięć podręczna sieci pełni rolę pośrednika między użytkownikami a Twoim pochodzeniem. W ten sposób ich żądania są obsługiwane z pamięci podręcznej i nie są pobierane z Twojego serwera.

Buforowanie

W rezultacie Twoje strony ładują się znacznie szybciej.

Możesz znaleźć wiele rodzajów klasyfikacji pamięci podręcznej. Ale na potrzeby tego artykułu i aby zrozumieć, kiedy występują trafienia i chybienia w pamięci podręcznej, przyjrzymy się dwóm najpopularniejszych typom — buforowaniu przeglądarki i proxy.


Buforowanie przeglądarki

Każda przeglądarka ma własne zasady buforowania i może przechowywać dane lokalnie na komputerze użytkownika.

Jest to przydatne, ponieważ przyspiesza wczytywanie odwiedzonej wcześniej strony. W rzeczywistości buforowanie przeglądarki jest głównym powodem, dla którego przyciski wstecz i dalej mogą działać swoją magią.

Buforowanie przeglądarki

Niestety buforowanie przeglądarki jest ograniczone do działania na urządzeniu. Ale jego największą zaletą jest to, że może zapisywać całe żądania sieciowe, co czyni go niezbędnym.


Buforowanie serwera proxy

Buforowanie proxy pomaga zmniejszyć obciążenie serwera i stosunkowo szybciej dostarczać treści użytkownikom końcowym. W najlepszym przypadku buforowanie proxy działa równolegle z buforowaniem przeglądarki.

Serwery proxy są dystrybuowane na całym świecie. Zazwyczaj są one obsługiwane przez dostawców CDN (Content Delivery Network).

Serwery proxy są pośrednikami między użytkownikiem a serwerem pochodzenia. Możesz ich używać do buforowania treści w różnych lokalizacjach, dzięki czemu Twoje treści będą bliżej użytkowników, zmniejszając opóźnienia i ruch sieciowy:

Z CDN

W przeciwieństwie do buforowania przeglądarki, buforowanie serwera proxy nie jest ograniczone do urządzenia i może jednocześnie udostępniać zawartość wielu użytkownikom.

Oto sedno buforowania. To szczegółowy temat, a do rozwinięcia jest o wiele więcej — zalety i wady różnych typów buforowania, jak skonfigurować reguły buforowania i wiele więcej.

Ale to nie jest temat tego artykułu.

Jeśli chcesz zagłębić się w ten temat, możesz zapoznać się z naszym artykułem - Buforowanie w sieci Web 101: Przewodnik dla początkujących po buforowaniu HTTP (przykłady, porady i strategie)

Lub obejrzyj nasz film na YouTube:

Na razie ważne jest, aby pamiętać, że jeśli żądane dane nie zostaną znalezione w Twojej pamięci podręcznej sieci, zaczną się pojawiać opóźnienia i problemy. To prowadzi nas do chybienia pamięci podręcznej.


Co to jest brak pamięci podręcznej?

Brak pamięci podręcznej występuje, gdy system, aplikacja lub przeglądarka żąda pobrania danych z pamięci podręcznej, ale tych konkretnych danych nie można obecnie znaleźć w pamięci podręcznej.

Gdy wystąpi brak pamięci podręcznej, żądanie zostanie przekazane do serwera pochodzenia.

Po pobraniu danych ze źródła są one następnie kopiowane i przechowywane w pamięci podręcznej w oczekiwaniu na podobne przyszłe żądania tych samych danych.

Istnieje wiele przyczyn braku pamięci podręcznej.

Na przykład, konkretne dane nigdy nie były buforowane w pierwszej kolejności.

Załóżmy, że masz witrynę eCommerce i właśnie dodałeś nową stronę produktu. Wszystkie obrazy, pliki HTML, CSS i JavaScript nigdy nie zostały dodane do pamięci podręcznej, ponieważ nikt nigdy ich nie zażądał. Oznacza to, że Twój pierwszy gość będzie musiał wysłać zapytanie do Twojego pochodzenia, aby załadować stronę. Po pierwszym żądaniu dane zostaną przeniesione do pamięci podręcznej i z niej obsługiwane.

Inną możliwością braku pamięci podręcznej jest to, że dane z pamięci podręcznej zostały w pewnym momencie usunięte.

Ponownie, jest kilka rzeczy, które mogły doprowadzić do tego scenariusza - potrzeba więcej miejsca, aplikacja zażądała usunięcia lub wygasła polityka Czasu życia dla danych.

Więcej informacji na temat Czasu życia omówimy w dalszej części artykułu.

Bez względu na przyczynę, prawda jest taka, że ​​każdy brak pamięci podręcznej prowadzi do dłuższych opóźnień, wolniejszych czasów ładowania, złych doświadczeń użytkowników i niezadowolonych odwiedzających.

Nie chcę jednak pozostawiać wrażenia, że ​​trzeba osiągnąć 100% trafień w pamięci podręcznej. To nie jest realistyczne.

Co więcej, w niektórych przypadkach konieczne są błędy w pamięci podręcznej, ponieważ może być konieczne upewnienie się, że udostępniana zawartość jest zawsze aktualna.

Na przykład witryna z wiadomościami, taka jak bbc.com, może zmieniać zawartość swojej strony głównej kilka razy w ciągu dnia, ponieważ należy zgłaszać najświeższe wiadomości. W tym przypadku trafienie w pamięci podręcznej oznacza, że ​​czytelnicy nie widzieli najnowszej wersji ich witryny i odpowiednio - przegapili najnowsze wiadomości.

Więc istnieje plus w przypadku chybienia pamięci podręcznej.

Jeśli jednak nie masz witryny z wiadomościami i nie zmieniasz regularnie zawartości, powinieneś dążyć do tego, aby chybienia w pamięci podręcznej były jak najmniejsze, a liczba trafień w pamięci podręcznej tak wysoka, jak to możliwe.


Co to jest trafienie w pamięci podręcznej?

Trafienie w pamięci podręcznej występuje, gdy żądane dane są pomyślnie udostępniane z pamięci podręcznej.

Na przykład, jeśli użytkownik odwiedzi jedną ze stron Twoich produktów, która ma wyświetlać obraz produktu, który sprzedajesz, jego przeglądarka wyśle ​​żądanie tego obrazu do pamięci podręcznej (przeglądarki lub CDN). Jeśli sieć CDN ma kopię obrazu w swojej pamięci, żądanie powoduje trafienie w pamięci podręcznej, a obraz jest wysyłany z powrotem do przeglądarki.


Co to jest współczynnik trafień w pamięci podręcznej i jak go obliczyć?

Współczynnik trafień w pamięci podręcznej mierzy, ile żądań pamięć podręczna pomyślnie dostarczyła ze swojego magazynu, w porównaniu do łącznej liczby żądań, które otrzymała.

Wysoki współczynnik trafień w pamięci podręcznej oznacza, że ​​pamięć podręczna spełniła większość żądań użytkowników, co z kolei oznacza, że ​​ich czasy wczytywania były krótsze.

Możesz obliczyć współczynnik trafień w pamięci podręcznej za pomocą tego wzoru:

Formuła współczynnika trafień w pamięci podręcznej

Jednak może to nie być potrzebne, ponieważ większość dostawców CDN oblicza to za Ciebie.

Na desce rozdzielczej NitroPack wyświetlane są również te informacje:

NitroPack CHR


Co to jest dobry współczynnik trafień w pamięci podręcznej?

Zgodnie z ogólną zasadą - współczynnik trafień w pamięci podręcznej 80% i więcej jest dobrym wynikiem , ponieważ oznacza to, że większość żądań jest obsługiwana z pamięci podręcznej.

Wszystko poniżej 80% na statycznych stronach internetowych wskazuje na nieefektywną politykę buforowania.

Według Cloudflare, jednego z największych dostawców CDN na świecie:

„Typowa witryna, która składa się głównie z treści statycznych, może z łatwością mieć współczynnik trafień w pamięci podręcznej w zakresie 95-99%”.

Globalny współczynnik trafień w pamięci podręcznej dla NitroPack wynosi 90%. Około 70% wszystkich użytkowników NitroPack doświadcza współczynnika trafień w pamięci podręcznej na poziomie 80% lub wyższym.


Jak zwiększyć współczynnik trafień w pamięć podręczną?

Możesz podjąć określone kroki, aby zmniejszyć liczbę chybień w pamięci podręcznej, a tym samym zwiększyć współczynnik trafień w pamięci podręcznej.

1. Skonfiguruj reguły buforowania w oparciu o potrzeby Twojej witryny

Nagłówek kontroli pamięci podręcznej pozwala ustawić niezliczoną ilość różnych reguł buforowania w celu zoptymalizowania wyświetlania treści.

Niektóre z zasad obejmują:

  • no-store informuje pamięci podręczne sieci, aby w żadnych okolicznościach nie przechowywały żadnej wersji zasobu;
  • no-cache informuje pamięć podręczną sieci Web, że musi zweryfikować buforowaną zawartość z serwerem pochodzenia przed udostępnieniem jej użytkownikom;
  • max-age ustawia maksymalny czas (w sekundach), przez który pamięć podręczna może przechowywać zapisany zasób przed ponownym pobraniem go lub ponowną weryfikacją na serwerze pochodzenia. Następnie zawartość jest oznaczana jako nieaktualna;
  • s-maxage robi dokładnie to samo co max-age, ale tylko dla pamięci podręcznych proxy;
  • private informuje pamięci podręczne sieci, że tylko prywatne pamięci podręczne mogą przechowywać odpowiedź;
  • public oznacza odpowiedź jako publiczną. Wszelkie pośrednie pamięci podręczne mogą przechowywać odpowiedzi oznaczone tą instrukcją;

Nagłówek kontroli pamięci podręcznej

Powinieneś ustawić czas życia (jak długo pamięć podręczna będzie przechowywać twoje dane, zanim pobierze zaktualizowane informacje ze źródła), który najlepiej pasuje do twojej zawartości.

Na przykład, jeśli zasób zmienia się mniej więcej co dwa miesiące, odpowiedni może być nagłówek z maksymalnym wiekiem wynoszący 50 dni. Jeśli jednak zasób jest zmieniany codziennie, możesz użyć nagłówka bez pamięci podręcznej .

Więcej informacji na temat nagłówków kontroli pamięci podręcznej, aktualności pamięci podręcznej i sprawdzania poprawności można znaleźć w naszym filmie na YouTube:

2. Zignoruj ​​parametry UTM

Prowadzenie wielu kampanii reklamowych (np. reklamy na Facebooku, reklamy Google itp.) generuje różne adresy URL o określonych parametrach UTM.

W rezultacie masz jedną stronę z wieloma odmianami (różnymi parametrami UTM), które należy zoptymalizować.

Tagi UTM

Jest to problem, ponieważ każda odmiana adresu URL jest uważana za unikalny obiekt, a każde żądanie zostanie skierowane do serwera pochodzenia.

W związku z tym każde żądanie zostanie sklasyfikowane jako brak pamięci podręcznej, nawet jeśli żądana zawartość była dostępna w pamięci podręcznej sieci Web.

Prowadzi to do niepotrzebnie niższego współczynnika trafień w pamięci podręcznej.


NitroPack — najłatwiejszy sposób na osiągnięcie doskonałego współczynnika trafień w pamięci podręcznej

Po wszystkim, co omówiliśmy, cały proces osiągania wysokiego współczynnika trafień w pamięci podręcznej może wydawać się nieco przytłaczający.

Dobrą wiadomością jest to, że jeśli pracujesz z dostawcą CDN, większość rzeczy, o których wspomniałem, takich jak nagłówki kontroli pamięci podręcznej, może być już załatwiona.

Do wszystkiego innego możesz użyć wtyczki buforującej.

Na przykład NitroPack jest wyposażony w gotowe funkcje, które gwarantują naszym użytkownikom wysoki współczynnik trafień w pamięci podręcznej. To zawiera:

  • Cache Warmup będzie symulować organiczne wizyty na Twojej stronie, co automatycznie prowadzi do tego, że NitroPack przygotuje zoptymalizowane (buforowane) wersje Twojej strony na komputery stacjonarne i urządzenia mobilne.
  • Unieważnienie pamięci podręcznej oznacza zawartość pamięci podręcznej jako „nieaktualną”, ale wyświetla ją, dopóki nowa zoptymalizowana zawartość nie będzie dostępna. W rezultacie odwiedzający zawsze widzą zoptymalizowaną treść, nawet jeśli przez krótki czas może być nieaktualna.
  • Wbudowany CDN, który eliminuje potrzebę synchronizowania CDN z wybraną wtyczką buforującą. Często jest to czasochłonne, niewygodne i może powodować nieoczekiwane problemy.
  • Opcja Ignorowany parametr, która pozwala NitroPack domyślnie ignorować niektóre powszechnie używane parametry UTM (i inne), dzięki czemu nie musisz się martwić podczas prowadzenia kampanii marketingowych.

Zignorowane parametry

Ale nie musisz mi wierzyć na słowo. Przetestuj NitroPack za darmo i przekonaj się o jego wpływie.