Statyczna pamięć podręczna: co to jest i jak działa

Opublikowany: 2022-06-30

Strategie buforowania są trudne, więc nasz kierownik ds. wsparcia, Ryan Belisle, poświęcił trochę czasu, aby wyjaśnić jeden ze sposobów wykorzystania buforowania statycznego w celu zapewnienia szybszej witryny.

Czytaj dalej, aby dowiedzieć się:

  • Co to jest zawartość statyczna pamięci podręcznej?
  • Zalety statycznej pamięci podręcznej.
  • Ograniczenia statycznego buforowania.
  • Jak zaimplementować buforowanie statyczne.
  • Jak wyłączyć buforowanie statyczne.

W e-commerce niewiele rzeczy jest bardziej nieszczęśliwych niż płacenie za kampanię promocyjną i oglądanie, jak błyszczy, tylko po to, aby zobaczyć, jak Twoja witryna ulega awarii i spala się w najlepszej godzinie. Czasami promocje przewyższają Twoje oczekiwania, a Twoje proaktywne środki nie wystarczą. Co wtedy?

Jedną z taktyk zmniejszania wydajności witryny w ostatniej chwili jest metoda zwana statycznym buforowaniem.

Heads-up! Nie zalecamy podejmowania działań w ostatniej chwili, aby poradzić sobie z przewidywanymi skokami ruchu w sieci. Jest to przydatne, gdy zastosowałeś już sprawdzone metody optymalizacji infrastruktury lub aplikacji, a Twoje wyniki marketingowe przekraczają wszelkie oczekiwania.

Co to jest zawartość statyczna pamięci podręcznej?

Chociaż dostępnych jest wiele form buforowania, buforowanie statyczne to metoda konwersji strony wygenerowanej przez żądanie użytkownika na dokument HTML w celu obsługi kolejnych żądań na tej samej stronie.

Zamiast tego, że serwer interpretuje sam kod witryny, wysyła zapytania do bazy danych i zwraca dokument HTML z powrotem do klienta, a na koniec ładuje stronę, statyczne buforowanie zapisuje pojedynczy wynik z pierwszych dwóch kroków i udostępnia ten dokument każdemu, kto zgłasza żądanie .

Korzyści z buforowania statycznego

Chociaż podstawowe, statyczne buforowanie może mieć ogromny wpływ, szczególnie w następujących obszarach:

  • Zmniejsz obciążenie : zamiast generować procesy PHP do obsługi żądań do stron w witrynie, serwer sieciowy będzie po prostu wyświetlał dokument HTML bezpośrednio z powrotem do żądania na stronie statycznie buforowanej.
  • Zapewnij „stronę docelową” dla całego ruchu klikanego : zamiast wydawać zasoby każdemu, kto odwiedza Twoją stronę główną lub podąża za linkiem do określonego adresu URL, domyślnie udostępnia to stronę z pamięci podręcznej bez zakłócania normalnego działania innych stron w witrynie .

Ograniczenia buforowania statycznego

Chcę jednak zaznaczyć, że buforowanie statyczne ma ograniczenia i powinno być używane tylko jako rozwiązanie tymczasowe. Pamiętać:

  • Statyczna pamięć podręczna to po prostu: statyczna. Wszelkie zmiany wprowadzone w witrynie nie zostaną odzwierciedlone na stronach buforowanych w ten sposób.
  • Informacje takie jak „pozycje w koszyku” lub inne dane przechowywane w plikach sesji Twoich klientów nie będą działać na tych stronach.

Jak zaimplementować buforowanie statyczne

Chociaż istnieje kilka różnych sposobów implementacji statycznego buforowania, oto podstawowe kroki, aby zrobić to ręcznie:

1. Zaloguj się do swojego serwera za pomocą SSH.

2. Utwórz osobny katalog w swoim webroot, aby przechowywać dokumenty HTML używane w statycznej pamięci podręcznej.

3. Używając cURL lub Wget, wysyłaj żądania do stron docelowych i przechowuj je w katalogu pod odpowiednimi nazwami URI (indeks, produkty itp.)

4. Dodaj rewrites na początku pliku .htaccess, aby przekierować żądania do statycznych plików pamięci podręcznej, takich jak:

[kod]
RewriteCond %{REQUEST_URI} ^/?example_category$ [NC]
RewriteRule .* https://www.domain.tld/static/example_category.html [R=302,L]
[/kod]

Alternatywnie możesz również napisać skrypt, który obsłuży ten proces. Poniższy przykład umożliwia utworzenie pliku z osobnym adresem URL w każdym wierszu. Te adresy URL zostaną następnie odczytane w celu wygenerowania statycznej pamięci podręcznej:

[język kodu=”bash”]
#!/kosz/bash
# Podstawowa walidacja argumentów
if [ „$#” -ne 2 ]; następnie
echo -e „Musi przekazać dwa argumenty do skryptu.\n\nZastosowanie: ./nexcess_static_cache_helper.sh plik_listy_url_domeny\n”
wyjście 1
fi
# Uzyskaj trochę danych o domenie
domena=$1
pages_file=$2
# Utwórz katalog dla stron statycznych w bieżącym katalogu
cache_dir=./static_cache
jeśli ! [[ -d $katalog_cache ]]; następnie
mkdir $katalog_podręcznego
fi
# Pobierz statyczne strony do plików HTML
URL_list=$(kot $pages_file)
dla adresu URL w $URL_list; robić
request_uri=$(echo $URL | cut -d/ -f 4-)
if [[ -z “$żądanie_uri” ]]; następnie
cache_page_name=”indeks”
request_uri="/"
w przeciwnym razie
cache_page_name=$(echo $request_uri | perl -pe 's,/|\.,_,g')
fi
wget -q $URL -O $cache_dir/$cache_page_name.html
echo „$request_uri $cache_page_name” >> $HOME/temp_url.file
Gotowe
# Sformatuj blok dla htaccess
echo -e „########”
echo -e „# START: Statyczne przepisanie adresu URL pamięci podręcznej wygenerowane w dniu $(data)”
echo -e „########”
echo -e „Przepisz silnik włączony”
kot $HOME/temp_url.file | podczas czytania strony uri; robić
echo “Przepisz Warunek %{REQUEST_URI} ^/?${uri}$ [NC]\n”
echo „RewriteRule .* https://www.${domain}/static_cache/$page [R=302,L]\n”
Gotowe
echo -e „######”
echo -e „# END: Statyczne przepisanie adresu URL pamięci podręcznej wygenerowane w dniu $(data)”
echo -e „######”
rm $HOME/temp_url.file
[/kod]

Aby użyć powyższego skryptu:

1. Przejdź do webroot swojej witryny, a następnie utwórz plik o nazwie cache_list.txt lub jakkolwiek wolisz.

2. Otwórz plik. Dodaj adres URL dla każdej strony, która ma być statycznie buforowana, używając nowego wiersza dla każdego wpisu adresu URL. Powinno to wyglądać tak:

[kod]
https://www.example.com/
https://www.example.com/wyprzedaż
https://www.example.com/produkty
[/kod]

Zapisz plik, a następnie utwórz plik z powyższym skryptem i zapisz go jako nexcess_static_cache_helper.sh , lub jakąkolwiek inną nazwę.

Ustaw plik wykonywalny:
[code]chmod +x nexcess_static_cache_helper.sh[/code]

Gdy będziesz gotowy, uruchom skrypt, ale zastąp go, użyj własnej nazwy pliku i rzeczywistej nazwy domeny:
[kod]./nexcess_static_cache_helper.sh example.com lista_podręczników.txt[/kod]

Spowoduje to utworzenie katalogu static_cache w twoim webroocie, zawierającego dokumenty HTML, które będą używane do statycznej pamięci podręcznej. Dodatkowo Twój terminal pokaże dane wyjściowe przypominające:
[kod]
########
# START: Statyczne przepisywanie adresów URL pamięci podręcznej wygenerowane w poniedziałek 18 września 15:49:11 EDT 2017
########
Przepisz silnik włączony
Przepisz Warunek %{REQUEST_URI} ^/?/$ [NC]\n
Przepisz regułę .* https://www.example.com/statyczna_cache/index [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?sale$ [NC]\n
Przepisz regułę .* https://www.example.com/statyczna_cache/wyprzedaż [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?products$ [NC]\n
Przepisz regułę .* https://www.example.com/statyczna_cache/produkty [R=302,L]\n
######
# END: Statyczne przepisywanie adresów URL pamięci podręcznej wygenerowane w poniedziałek 18 września 15:49:11 EDT 2017
######
[/kod]

Skopiuj powyższy blok i wklej go na górze pliku .htaccess dla witryny, który zwykle powinien znajdować się w bieżącym katalogu.

Statyczna pamięć podręczna powinna być teraz włączona. W duchu dobrego gospodarowania usuń pliki, które wygenerowaliśmy w poprzednich krokach:
[code]rm nexcess_static_cache_helper.sh cache_list.txt[/code]

Jak wyłączyć statyczne buforowanie?

Aby wyłączyć buforowanie statyczne, usuń blok kodu umieszczony w pliku .htaccess.

Dodatkowo, jeśli potrzebujesz ponownie wygenerować pliki, uruchom skrypt ponownie, a zastąpi on dokumenty HTML nowszymi wersjami. Zalecam również zastąpienie bloku kodu .htaccess, aby zaktualizować znacznik czasu na przyszłość.

Teraz wiesz

Jak wspomniano wcześniej, jest to tylko metoda tymczasowa i nie należy jej używać jako podstawowej strategii optymalizacji wydajności. Aby uzyskać długoterminowe rozwiązania, zapoznaj się z naszym przewodnikiem po optymalizacji, zaimplementuj CDN lub skontaktuj się z naszym zespołem pomocy technicznej, aby poznać dodatkowe opcje, takie jak hosting Magento, WooCommerce lub WordPress.

Lub sprawdź zarządzane pakiety WordPress firmy Nexcess, aby zobaczyć, jak możesz zoptymalizować wydajność swojej witryny.