Sklep na WooCommerce bez cache działa wyraźnie wolniej, ale po włączeniu przyspieszania często pojawia się inny kłopot. Klienci widzą nieaktualny mini koszyk, nie mogą przejść do płatności albo w strefie Moje konto pojawiają się cudze dane. To klasyczne skutki cachowania treści, które powinny być zawsze świeże i przypisane do konkretnego użytkownika.
Rozwiązaniem jest LiteSpeed Cache z ESI, czyli wycinaniem z cache fragmentów dynamicznych. Dzięki temu możesz bezpiecznie trzymać w cache całe strony kategorii czy produktu, a jednocześnie mieć zawsze poprawny koszyk, mini koszyk i panel konta. Poniżej znajdziesz praktyczną konfigurację krok po kroku oraz podpowiedzi, jak uniknąć typowych pułapek.
Dlaczego cache w WooCommerce potrafi zepsuć koszyk i konto
Cache zapisuje gotowe strony, aby serwować je błyskawicznie kolejnym odwiedzającym. W sklepie problem w tym, że część elementów jest prywatna lub zmienia się natychmiast po akcji użytkownika. Mini koszyk, stan zalogowania czy rabaty po kuponie nie mogą być wspólne dla wszystkich. Jeśli te fragmenty trafią do cache, klienci dostaną nie swoje dane, a to uderza w sprzedaż i zaufanie.
Czym jest LiteSpeed Cache i jak działa z ESI
LiteSpeed Cache to wtyczka, która przy wsparciu serwera LiteSpeed lub usługi QUIC cloud potrafi cacheować strony bardzo agresywnie, a jednocześnie chronić fragmenty dynamiczne. Kluczem jest ESI, czyli Edge Side Includes. W praktyce oznacza to, że cała strona jest w cache, ale w miejscach dynamicznych powstają małe okienka renderowane osobno i na świeżo.
W WooCommerce takimi fragmentami są między innymi mini koszyk, licznik produktów w koszyku, przycisk dodaj do koszyka z asynchroniczną aktualizacją, a także panel Moje konto. Dzięki ESI możesz mieć szybkie listy produktów i karty produktów, a jednocześnie pewność, że dane użytkownika nigdy nie są współdzielone.
Wtyczka daje też kontrolę nad TTL, czyli czasem życia cache. Dłuższy TTL dla stron publicznych i krótszy dla elementów szybko zmieniających się pozwala zachować balans między wydajnością a świeżością danych.
Przygotowanie środowiska przed włączeniem cache
Upewnij się, że witryna działa na serwerze LiteSpeed albo zamierzasz użyć pośredniczącej chmury QUIC cloud. Bez tego część funkcji cache strony nie zadziała i pozostaną tylko optymalizacje zasobów. Odinstaluj inne wtyczki cache, wyczyść ich reguły i foldery, aby uniknąć konfliktów. Warto też zrobić kopię zapasową, bo błędna konfiguracja cache potrafi popsować sesje użytkowników.
Instalacja i szybki start
Zainstaluj i włącz wtyczkę, a następnie w panelu LiteSpeed Cache włącz globalny cache oraz integracje WooCommerce. Domyślnie koszyk, checkout i strona konta są wykluczone z cache, co chroni przed najpoważniejszymi błędami już od pierwszych minut. Jeśli korzystasz z QUIC cloud, przeprowadź krótką autoryzację domeny, aby caching brzegowy zaczął działać.
Ustawienia cache dla WooCommerce
W ustawieniach cache upewnij się, że strony koszyka, zamówienia i konta są na liście wykluczeń. To obszary, gdzie pełny cache strony nie powinien działać. Dodatkowo sprawdź listę ciasteczek i parametrów, które wyłączają cache. Kluczowe są woocommerce items in cart i wp woocommerce session, które sygnalizują, że użytkownik ma aktywną sesję zakupową.
Dla pozostałych stron sklepu ustaw dłuższy TTL, na przykład dla kategorii, strony głównej i kart produktów. Purge, czyli czyszczenie cache, powinno automatycznie uruchamiać się po edycji produktów, zmianie stanu magazynowego i cen. Dzięki temu witryna będzie szybka, a klient zawsze zobaczy aktualne informacje o dostępności i promocjach.
ESI w praktyce koszyk mini koszyk konto
Włącz ESI w panelu LiteSpeed Cache. Następnie wskaż elementy, które mają być renderowane jako prywatne bloki. Najczęściej jest to mini koszyk w nagłówku, widżet koszyka w sidebarze oraz sekcje Moje konto. Takie bloki będą pomijane przez cache strony i ładowane osobno dla każdego użytkownika, co zapewnia poprawne wartości i brak wycieków danych.
Jeśli motyw lub builder wyświetla własny mini koszyk, poszukaj opcji oznaczenia tego fragmentu jako ESI. W LiteSpeed można to zrobić dla widżetów i niektórych shortcode. Jeżeli nie ma gotowego uchwytu, alternatywą jest pozostawienie całej sekcji nagłówka poza cache, ale jest to mniej wydajne niż precyzyjny ESI.
Dla bloków ESI ustaw krótszy TTL lub tryb prywatny. Prywatny oznacza, że fragment jest trzymany per użytkownik. W przypadku mini koszyka krótszy TTL plus prywatny tryb sprawdza się najlepiej, bo liczba pozycji w koszyku może zmieniać się co chwilę.
Wykluczenia i TTL które ratują sprzedaż
Dodaj do wykluczeń wszystkie adresy akcji asynchronicznych WooCommerce, na przykład endpointy Ajax związane z koszykiem i kuponami. Dzięki temu te żądania nigdy nie będą serwowane z cache i zawsze zaktualizują stan po stronie użytkownika.
Przemyśl TTL dla stron z intensywnym ruchem z reklam. Zbyt krótki TTL zabije zysk z cache, zbyt długi może nie nadążać za rotującymi banerami lub dynamiką oferty. Często sprawdza się podejście, w którym strony list produktów mają TTL w godzinach, a oczyszczanie cache uruchamia się po kluczowych zmianach w katalogu.
Optymalizacja zasobów bez psucia skryptów WooCommerce
Funkcje minify, łączenie i opóźnianie skryptów potrafią kolidować z wc cart fragments oraz mechaniką aktualizacji koszyka. Jeśli zauważysz, że licznik koszyka nie odświeża się lub przycisk dodaj do koszyka nie reaguje, wyklucz z optymalizacji jQuery i skrypty WooCommerce odpowiedzialne za koszyk oraz fragmenty. Lepiej zrezygnować z jednej optymalizacji niż stracić działający koszyk.
Najczęstsze konflikty i jak je rozwiązać
Konflikty pojawiają się z innymi wtyczkami cache, firewallami na poziomie hostingu oraz agresywnym CDN, który nadpisuje nagłówki cache. Zasada jest prosta. Jeden system odpowiada za cache strony. Jeśli używasz LiteSpeed Cache, wyłącz inne akceleratory stron lub ustaw je tak, aby nie cacheowały HTML.
Druga grupa problemów dotyczy logowania i sesji. Jeżeli po zalogowaniu klient widzi nadal przycisk Zaloguj się, sprawdź czy nagłówek i mini koszyk są w ESI. Warto też wyczyścić wszystkie warstwy cache i zrestartować sesje. Po każdej większej zmianie konfiguracji testuj w trybie prywatnym przeglądarki, na koncie testowym i bez zalogowania.
Dodatkowe usprawnienia które dają przewagę
Warto uruchomić object cache, najlepiej z Redis lub Memcached, bo WooCommerce intensywnie korzysta z zapytań do bazy. Crawler LiteSpeed może podgrzewać najważniejsze strony po czyszczeniu cache, dzięki czemu pierwsi użytkownicy nie trafiają na zimny start. Przeglądarkowy cache grafik i stylów zmniejsza liczbę żądań przy powracających wizytach i poprawia wrażenie szybkości.
Dla kogo ma sens cache z ESI i kiedy odpuścić
ESI ma największy sens w sklepach z ruchem na stronach katalogowych i produktowych oraz z elementami dynamicznymi w nagłówku. Jeśli serwer nie obsługuje LiteSpeed i nie chcesz korzystać z chmury, zyskasz mniej, a konfiguracja będzie wymagała większej ostrożności. Gdy sklep ma bardzo niestandardowy mini koszyk renderowany przez złożony skrypt buildera, czasem prościej wyłączyć cache dla całego nagłówka niż walczyć o idealny ESI uchwyt.
Po wdrożeniu takiej konfiguracji sprawdź pełną ścieżkę zakupową na świeżej przeglądarce. Zwróć uwagę na odświeżanie mini koszyka, dodawanie i usuwanie produktów, logowanie, kupony oraz przejście do płatności. Jeśli wszystko działa płynnie, możesz stopniowo zaostrzać optymalizacje zasobów, za każdym razem weryfikując koszyk i konto użytkownika.