Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

Szybkość i pamięć podręczna (cache) w sklepie

Moduł 6: Zarządzanie i bezpieczeństwo · Czas czytania: 10 min

Cel lekcji: Po tej lekcji będą Państwo potrafili skonfigurować pamięć podręczną (cache) sklepu WooCommerce tak, aby sklep działał szybko, a strony osobiste nigdy nie trafiały do cache, oraz sprawdzić to w nagłówkach HTTP.

Kluczowe pojęcia: pamięć podręczna strony, wykluczenia (koszyk, zamówienie, Moje konto), pliki cookie omijające cache, nagłówki no-cache, DONOTCACHEPAGE, pamięć podręczna obiektów, Redis, fragmenty koszyka, lokalizacja geograficzna przy pamięci podręcznej strony, porządkowanie zaplanowanych działań

Dwa rodzaje stron

Podstawy pamięci podręcznej (pamięć podręczna strony, pamięć podręczna przeglądarki, pamięć podręczna obiektów, OPcache, CDN) są opisane w kursie WordPress, w lekcji 6.2. Tam znajduje się też najważniejsza zasada dla sklepów: strony osobiste nie mogą trafiać do pamięci podręcznej strony. Ta lekcja rozwija ten temat.

Sklep ma dwa rodzaje stron:

RodzajPrzykładyCache
Takie same dla wszystkichstrona główna, strona sklepu, kategorie, strony produktów, strony informacyjnePamięć podręczna strony: tak, tu jest największy zysk
Inne dla każdego odwiedzającegokoszyk, zamówienie, Moje konto, strona odstąpienia od umowy z zalogowanym klientemPamięć podręczna strony: nigdy

Jeśli coś pójdzie źle, od razu to widać: klient widzi koszyk innej osoby albo, co gorsza, czyjś adres na stronie zamówienia. To jest również naruszenie ochrony danych w rozumieniu RODO (GDPR) (KB 6749).

Co WooCommerce robi samo

WooCommerce wspiera pamięć podręczną na trzy sposoby. Warto je znać, aby zauważyć, kiedy coś je usuwa:

  1. Stałe. Na stronach koszyka, zamówienia i Moje konto WooCommerce ustawia DONOTCACHEPAGE (a także odpowiednie stałe dla pamięci podręcznej obiektów i bazy danych). Wiele wtyczek cache odczytuje tę stałą i pomija taką stronę.
  2. Nagłówki. Na tych samych stronach WooCommerce wysyła nagłówki no-cache WordPressa: Cache-Control: no-cache, must-revalidate, max-age=0, private oraz Expires z datą w przeszłości. Serwer proxy lub CDN, który przestrzega reguł, nie zapisuje wtedy strony. Dla zalogowanych użytkowników dochodzi jeszcze no-store.
  3. Pliki cookie. Gdy tylko ktoś doda coś do koszyka, WooCommerce ustawia pliki cookie, takie jak woocommerce_items_in_cart, woocommerce_cart_hash i wp_woocommerce_session_.... Dobre mechanizmy cache nie podają odwiedzającym z takim plikiem cookie zapisanej strony, również stron produktów, ponieważ na przykład koszyk w nagłówku strony jest wtedy inny dla każdego odwiedzającego.

Dokumentacja WooCommerce zaleca dla wtyczek cache: wykluczyć strony Koszyk, Moje konto i zamówienie oraz pliki cookie woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed i store_notice[...]. Dla Varnisha podaje też reguły dla adresów z ?add-to-cart=.

Gdzie w praktyce pojawiają się problemy

  • Inne adresy stron sklepu. Zmienili Państwo nazwę koszyka na /moj-koszyk/ albo wtyczka tłumaczeniowa tworzy /de/warenkorb/. Cache, który wyklucza stałe adresy, takie jak /cart, pominie je. Wtyczki cache, które znają WooCommerce, odczytują te strony z ustawień; cache na serwerze lub w CDN tego nie robi.
  • CDN, który zapisuje wszystko. Niektóre reguły CDN („cache everything”) ignorują nagłówki. W takim przypadku prosimy wyraźnie wykluczyć strony sklepu i wymienione pliki cookie.
  • Wtyczka, która nadpisuje nagłówki. Wtyczka bezpieczeństwa lub przyspieszająca czasem ustawia na każdej stronie Cache-Control: public, max-age=.... Wtedy nagłówków no-cache już nie ma.
  • Sesja dla każdego odwiedzającego. Zwykle WooCommerce ustawia plik cookie sesji dopiero wtedy, gdy w koszyku coś jest. Jeśli wtyczka lub motyw uruchamia sesję dla każdego odwiedzającego (plik cookie wp_woocommerce_session_ lub PHPSESSID już przy pierwszej wizycie), pamięć podręczna strony przestaje działać dla wszystkich, a sklep przy dużym ruchu jest wolny.
  • Lokalizacja geograficzna. W WooCommerce > Ustawienia > Ogólne wybierają Państwo domyślną lokalizację klienta. Przy zwykłej opcji „Lokalizacja geograficzna” serwer ustala kraj dla każdego odwiedzającego osobno, a przy cenach zależnych od kraju nie da się tego pogodzić z pamięcią podręczną strony. Dlatego WooCommerce ma opcję „Lokalizacja geograficzna (z obsługą pamięci podręcznej strony)”, która ustala kraj przez dodatkowe zapytanie w przeglądarce. Jeśli przed złożeniem zamówienia nie potrzebują Państwo cen ani VAT zależnych od kraju, prosimy wybrać kraj sklepu: to najprostsze rozwiązanie. Na potrzeby lokalizacji geograficznej WooCommerce okresowo pobiera bazę danych MaxMind.

Na serwerze LiteSpeed (tak jak w WebOké) wtyczka LiteSpeed Cache sama obsługuje wykluczenia dla WooCommerce; prosimy sprawdzić je w ustawieniach wykluczeń. Na innych serwerach WWW i u innych dostawców hostingu działa to podobnie z inną wtyczką cache.

Czego pamięć podręczna strony nie rozwiązuje

Koszyk i zamówienie są zawsze budowane przez PHP i bazę danych. Przy dużym ruchu (promocja, newsletter) to właśnie te strony, na których Państwa klienci wydają pieniądze. Tam pomagają inne rozwiązania:

  • Pamięć podręczna obiektów, taka jak Redis, przechowuje wyniki zapytań do bazy danych w pamięci. W sklepie, który ma wiele stron niemogących trafić do pamięci podręcznej strony, daje to wyraźnie więcej niż na zwykłej stronie. Hosting musi oferować Redis (w WebOké jest to możliwe, DA 15.7); następnie włączają go Państwo za pomocą wtyczki.
  • Fragmenty koszyka. Klasyczne motywy aktualizują koszyk w nagłówku strony skryptem (wc-cart-fragments), który przy niepustym koszyku wysyła dodatkowe zapytanie. Nowoczesne motywy blokowe z blokiem mini-koszyka potrzebują tego w mniejszym stopniu. Prosimy nie ładować takich skryptów na stronach, na których nic nie robią.
  • Uporządkowane zaplanowane działania. WooCommerce używa Action Scheduler do zadań w tle (lekcja 7.3). Zakończone działania są domyślnie usuwane po miesiącu. Jeśli lista mimo to rośnie do setek tysięcy, często przez rozszerzenie, które ciągle coś planuje, lub przez nieudane działania, zapytania do bazy danych stają się wolniejsze. Prosimy sprawdzić w WooCommerce > Status > Zaplanowane działania liczbę działań nieudanych i oczekujących.
  • HPOS. Zamówienia we własnych tabelach (lekcja 1.2) sprawiają, że wyszukiwanie zamówień jest szybsze niż w starej tabeli wpisów. Istniejące sklepy muszą przejść na to rozwiązanie samodzielnie (lekcja 6.2 o kopiach zapasowych przed zmianą).
  • Aktualna wersja PHP i wystarczająca ilość pamięci (lekcja 7.2).

W praktyce: tak to wygląda w WooCommerce

Prosimy sprawdzić to na przykładzie Theehuis Example w oknie prywatnym, korzystając z narzędzi deweloperskich przeglądarki (F12, karta Sieć, pierwsze żądanie):

  1. Strona główna, załadowana dwa razy: przy drugim razie nagłówek taki jak x-litespeed-cache: hit lub cf-cache-status: HIT. Brak pliku cookie wp_woocommerce_session_ przy pierwszej wizycie.
  2. shop.example.com/koszyk/, załadowana dwa razy: brak trafienia (hit), a cache-control zawiera no-cache lub private.
  3. To samo dla strony zamówienia i Moje konto.
  4. Prosimy dodać produkt do koszyka i załadować stronę produktu: widzą Państwo własny koszyk, a nie zapisaną wersję.

Podsumowanie

  • Strony takie same dla wszystkich mogą trafiać do cache; koszyk, zamówienie i Moje konto nigdy.
  • WooCommerce samo ustawia DONOTCACHEPAGE, nagłówki no-cache i pliki cookie; prosimy sprawdzić, czy nic ich nie usuwa ani nie ignoruje.
  • Prosimy zwrócić uwagę na zmienione adresy, reguły CDN, wtyczki nadpisujące nagłówki, sesje dla każdego odwiedzającego i lokalizację geograficzną.
  • Redis, uporządkowane zaplanowane działania, HPOS i dobra wersja PHP pomagają tam, gdzie pamięć podręczna strony nie może działać.
  • Prosimy testować przez dwukrotne załadowanie strony w oknie prywatnym i odczytanie nagłówków.

Quiz

1. Klient widzi w swoim koszyku produkty, których nie wybrał. Jaka jest najbardziej prawdopodobna przyczyna?



2. Jakiego nagłówka należy się spodziewać na stronie zamówienia w sklepie WooCommerce?



3. Sklep nie pokazuje cen zależnych od kraju, ale domyślna lokalizacja jest ustawiona na „Lokalizacja geograficzna”. Jakie jest proste usprawnienie dla cache?



4. Dlaczego Redis pomaga w sklepie bardziej niż na zwykłej stronie informacyjnej?



Zadanie

Zadanie A6.4: Czy koszyk i zamówienie są wyłączone z pamięci podręcznej (cache)? Prosimy podać adres sklepu oraz adresy strony koszyka i strony zamówienia (opcjonalnie także Moje konto). Program pobiera stronę główną dwa razy w odstępie 2 sekund, bez plików cookie, a następnie każdą stronę sklepu również dwa razy. Nic nie jest dodawane do koszyka ani zamawiane. Wynik zielony, jeśli strona główna przy drugim pobraniu pochodzi z cache (lub ładuje się wyraźnie szybciej) bez ustawiania pliku cookie sesji, a każda strona sklepu przy drugim pobraniu nie ma trafienia w cache i wysyła Cache-Control z no-cache, no-store, private lub max-age=0. Wynik pomarańczowy, jeśli strona główna nie korzysta z cache albo strona sklepu nie ma trafienia, ale nie ma też nagłówka no-cache. Wynik czerwony przy trafieniu w cache na stronie koszyka, zamówienia lub Moje konto albo gdy strona główna uruchamia sesję WooCommerce dla każdego odwiedzającego.

Zielony znacznik oznacza, że ta kontrola jest teraz w porządku, a nie że Państwa sklep jest bezpieczny.

Zadanie A6.4: Czy koszyk i zamówienie są wyłączone z pamięci podręcznej (cache)?





Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Dalsza lektura

Kroki w panelu dotyczą WebOké; u innych dostawców działa to podobnie.

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…