Pamięć podręczna całych stron PrestaShop, Redis i CDN

Wybierz i sprawdź warstwy cache PrestaShop: wykluczanie żądań personalizowanych, integracje Redis, izolację sesji, reguły Cloudflare i czyszczenie pamięci.

mypresta.rocks · Zaktualizowano 2026-11-01

Przechowuj publiczne strony i powtarzające się dane w pamięci podręcznej tylko tam, gdzie możesz zachować poprawność cen, stanów magazynowych i stanu klienta. Rozpoznaj każdą warstwę pamięci podręcznej, sprawdź jej integrację i mierz zarówno trafienia w pamięci podręcznej, jak i żądania obsługiwane bez jej użycia.

Co byśmy zrobili

Zmierzylibyśmy ścieżkę obsługi żądań w sklepie produkcyjnym przed wyborem kolejnej pamięci podręcznej. Zachowaj działającą pamięć podręczną, jeśli zapewnia poprawność i zmniejsza zmierzone obciążenie. Używaj buforowania całych stron dla kwalifikujących się powtarzalnych wizyt publicznych, a równolegle usuwaj kosztowne operacje wykonywane bez pamięci podręcznej, zwłaszcza w koszyku i finalizacji zakupu. Redis jest kandydatem, gdy wdrożony adapter może ponownie wykorzystywać dane powodujące opóźnienie.

Wybór zależy od używanych wydań PrestaShop i PHP, modułów, integracji, motywu, danych katalogu, grup klientów, rynków i ruchu. Uwzględnij możliwości zespołu w zakresie monitorowania, czyszczenia i przywracania każdej dodanej usługi. Import stanów z ERP, ceny zależne od kraju lub spersonalizowany nagłówek mogą zmienić bezpieczne zasady, nawet gdy dwa sklepy używają tego samego modułu pamięci podręcznej.

Wprowadź zmianę na prywatnej kopii testowej z reprezentatywnymi danymi oraz tymi samymi istotnymi modułami, integracjami i motywem. Odizoluj przestrzeń nazw pamięci podręcznej i magazyn sesji od produkcji oraz nie dopuść, by testowe zamówienia, e-maile i eksporty trafiały do systemów produkcyjnych. Zmieniaj jedną warstwę naraz, przećwicz przeglądanie, aktualizacje i odtwarzanie po awarii, a następnie zaplanuj wdrożenie z dostępną poprzednią konfiguracją i wyznaczoną osobą kontrolującą zamówienia oraz aktualność danych.

Jeśli chcesz ocenić wąskie gardło przed wyborem pamięci podręcznej, PrestaShop Speed & Core Web Vitals Audit zapewnia oparty na pomiarach plan poprawek z priorytetami; wdrożenie wycenia się osobno.

Która ścieżka odpowiada wynikom pomiarów?

Co obserwujeszZacznij tutajCo sprawdzić przed utrzymaniem zmiany
Powtarzalne anonimowe wizyty na stronach kategorii i produktów zajmują procesy robocze PHP.Przetestuj buforowanie kwalifikujących się całych stron w warstwie, którą potrafią obsługiwać hostingodawca i zespół.Trafienia w rozgrzaną pamięć zmniejszają pracę serwera źródłowego; żądania prywatne ją omijają, a chybienia nie uniemożliwiają korzystania ze sklepu.
Strony bez pamięci podręcznej powtarzają kosztowne odczyty bazy, których wyniki można bezpiecznie wykorzystywać ponownie.Sprawdź, czy obsługiwany adapter trwałej pamięci podręcznej obejmuje te odczyty, a następnie przetestuj Redis lub inny obsługiwany mechanizm.Aktywność właściwa dla adaptera i niższy koszt zapytań przy tych żądaniach, z poprawnym unieważnianiem.
Finalizacja zakupu czeka na API przewoźnika lub moduł wykonuje kosztowne operacje właściwe dla klienta.Profiluj tę integrację i ustal, które wyniki można ponownie wykorzystywać, jeśli w ogóle.Ścieżka zakupu bez pamięci podręcznej działa lepiej bez wykorzystywania wyceny lub stanu innego klienta.
HTML dociera szybko, ale obrazy lub skrypty zewnętrzne opóźniają wyświetlenie strony.Zajmij się zasobami, wykonywaniem skryptów i dostarczaniem plików statycznych przez CDN.Pomiary w przeglądarce się poprawiają; samo połączenie z Redis nie rozwiązuje tego problemu.
Masz hosting współdzielony lub nie masz dostępu do powłoki.Zapytaj hostingodawcę o zarządzany Redis, obsługiwane klienty PHP i dostępną diagnostykę.Obsługiwana usługa i zmierzona korzyść uzasadniają wdrożenie; sam brak SSH nie uzasadnia migracji.
Żądania trafiają na kilka serwerów aplikacji.Sprawdź wymagania współdzielonej pamięci podręcznej i sesji wraz z konfiguracją równoważenia obciążenia.Ta sama ścieżka klienta działa na różnych węzłach, ze spójnymi kluczami i przetestowanym postępowaniem przy awarii.

Ustal, którą warstwę pamięci podręcznej zmieniasz

Pamięć podręczna pomaga tylko wtedy, gdy aplikacja z niej odczytuje. Instalacja Redis nie przenosi automatycznie wszystkich pamięci podręcznych PrestaShop do pamięci operacyjnej.

WarstwaCo przechowujeCo nadal wykonuje się przy trafieniu
Pamięć zasobów statycznych przeglądarki lub CDNObrazy, arkusze stylów i skryptyŻądanie HTML nadal może dotrzeć do serwera źródłowego.
Pamięć HTML w CDN lub reverse proxyKwalifikujące się odpowiedzi HTTP stronTrafienie może zostać obsłużone przed uruchomieniem PHP.
Pamięć całych stron PHP na serwerze źródłowymWyrenderowany HTMLPHP i inicjalizacja poprzedzająca odczyt pamięci podręcznej nadal się wykonują.
Trwała pamięć podręczna zapytań/zapleczaKwalifikujące się wyniki wybrane przez integracjęAplikacja nadal buduje stronę.
Pamięć lokalna żądaniaDane ponownie używane w ramach jednego żądania PHPJest tworzona od nowa przy następnym żądaniu.
Pamięci kompilacji i wyników SmartySkompilowany PHP szablonu lub oddzielnie buforowany wynik szablonuZależy od polityki buforowania szablonu.
Pamięci podręczne SymfonyPamięci frameworka, takie jak dane kontenera i routinguOsobny adapter pamięci obiektowej nie zastępuje ich automatycznie.
OPcacheSkompilowany kod bajtowy PHPPHP wykonuje ten kod.

Smarty zwykle ponownie wykorzystuje skompilowane szablony. Nie kompiluje każdego szablonu przy każdym żądaniu. PrestaShop uruchamia Smarty z wyłączonym globalnym buforowaniem wyników i zarządza buforowaniem wybiórczo. Korzystaj z obsługiwanych ustawień panelu administracyjnego, zamiast bez zastanowienia zmieniać globalne buforowanie wyników.

Formularze Wydajność w PrestaShop 1.7.8 i 9 wymieniają mechanizmy Memcache, Memcached, APC/APCu i XCache, zależnie od zainstalowanych rozszerzeń. Nie oferują Redis ani mechanizmu systemu plików w tym selektorze. Starszy CacheFs to osobna implementacja. Redis wymaga adaptera lub modułu implementującego warstwę, której zamierzasz używać.

Cache::store() używa tablicy lokalnej dla żądania, a Configuration ma statyczne pamięci podręczne. Kwalifikujące się wyniki bazy danych mogą korzystać z trwałego mechanizmu Cache. Zmiana tego mechanizmu nie przekierowuje każdego odczytu kategorii, hooka, konfiguracji czy szablonu.

Wybierz bezpieczną politykę pamięci podręcznej całych stron

Pamięć podręczna całych stron przechowuje kwalifikującą się wyrenderowaną odpowiedź dla kolejnych odwiedzających. Przy chybieniu nadal odbywa się zwykłe renderowanie. Pamięć stron PHP może ograniczyć późniejszą pracę kontrolera i szablonu, zachowując narzut inicjalizacji. Trafienie w proxy lub CDN może całkowicie ominąć serwer źródłowy.

Zacznij od publicznych stron dla anonimowych użytkowników. Wyklucz z buforowania koszyk, finalizację zakupu, uwierzytelnianie, strony konta, trasy panelu administracyjnego, prywatne endpointy modułów, usługi sieciowe, wywołania zwrotne i żądania zmieniające stan. Uwzględnij również AJAX, parametry zapytań, linki podglądu, pliki cookie sesji i odpowiedzi ustawiające pliki cookie.

Klucz pamięci podręcznej musi rozróżniać każdy kontekst zmieniający publiczną odpowiedź. Zależnie od sklepu może to obejmować nazwę hosta, sklep, język, walutę, kraj, kontekst podatkowy, renderowanie dla urządzenia i obsługiwane parametry zapytań. Ceny dla grup klientów i personalizowane promocje wymagają szczególnej ostrożności.

Nie udostępniaj prywatnej treści jednego klienta innemu. Jeśli kontekstu nie można bezpiecznie przedstawić w kluczu, pomijaj buforowanie. Unikaj usuwania plików cookie tylko po to, by wymusić trafienie. Testuj zarówno odczyt pamięci podręcznej, jak i decyzję o zapisaniu nowo wyrenderowanej odpowiedzi.

Dynamiczne fragmenty, hydratacja przez AJAX, edge-side includes i pomijanie żądań personalizowanych to różne rozwiązania. Hydratacja i migotanie nie są nieuniknionymi cechami pamięci podręcznej całych stron. Jeśli Twoja implementacja zastępuje fragmenty nagłówka lub koszyka po załadowaniu, zarezerwuj miejsce i testuj na wolnych urządzeniach. Widoczny zerowy licznik koszyka sam w sobie nie dowodzi, że koszyk po stronie serwera jest pusty.

Performance Revolution uruchamia pamięć stron serwera źródłowego wewnątrz PHP po inicjalizacji, a zasady kwalifikacji sprawdzają kontekst klienta, koszyka i inne konteksty żądania. Pomoc modułu opisuje obsługiwane procesy pamięci stron, krytycznego CSS, rozgrzewania i CDN.

Unieważnianie jest częścią projektu

  • Usuwaj lub aktualizuj odpowiednie wpisy po zmianach produktów, kategorii, stanów magazynowych, cen, promocji, tłumaczeń i konfiguracji.
  • Uwzględnij zaplanowaną aktywację i wygaśnięcie reguł cenowych.
  • Wymagaj od importów i integracji wywoływania właściwego unieważniania. Bezpośrednie zapisy w bazie danych mogą omijać hooki aplikacji.
  • Traktuj TTL jako limit świeżości, a nie dowód, że zmiany są widoczne natychmiast.
  • Rozgrzewaj pamięć podręczną tylko dla kwalifikujących się stron publicznych i unikaj przeciążania serwera źródłowego jednoczesnymi chybieniami.

Przetestuj edycję ceny i zmianę stanu magazynowego przez każdą używaną ścieżkę aktualizacji. Ręczne czyszczenie może naprawić incydent, ale powtarzające się wyświetlanie nieaktualnych danych wymaga naprawy mechanizmu unieważniania.

Przykład: ceny publiczne i import stanów z ERP

Sklep sprzedaje klientom detalicznym w różnych krajach i oferuje osobne ceny zalogowanym klientom handlowym. Rozgrzej publiczną stronę produktu i kategorii w każdym obsługiwanym kontekście cenowym, a następnie zaloguj się jako klient handlowy. Porównaj wyświetlaną cenę, sposób prezentacji podatku i sumę koszyka z wynikiem bez pamięci podręcznej; wizyta klienta handlowego musi podlegać uzgodnionym zasadom omijania pamięci.

Na kopii testowej rozgrzej publiczne warianty produktu i listy oraz potwierdź trafienia w każdej włączonej warstwie pamięci HTML. Zmień wyłącznie cenę w panelu administracyjnym, a następnie porównaj każdy wariant z wynikiem bez pamięci podręcznej, zanim ręcznie ją wyczyścisz. Rozgrzej ponownie, potwierdź trafienia, po czym zmień wyłącznie stan magazynowy przez rzeczywisty import ERP i powtórz kontrole, uwzględniając komunikaty dostępności i kopie w węzłach brzegowych. Testuj każdą ścieżkę aktualizacji oddzielnie: jeśli którakolwiek pozostawia stare dane, omijaj pamięć odpowiednich stron, aż dana ścieżka zacznie niezawodnie ją unieważniać.

Podłącz Redis do zaimplementowanej integracji

Redis to działająca w pamięci operacyjnej usługa klucz-wartość, uruchomiona na twoim serwerze lub dostarczana przez hostingodawcę. Może przechowywać wartości pamięci podręcznej, wpisy pamięci stron lub sesje PHP, gdy korzysta z niej odpowiednia integracja. Najpierw ustal adapter, obsługiwane wersje PrestaShop/PHP, format kluczy, zasady TTL, unieważnianie i zachowanie przy awarii.

  1. Potwierdź, że hosting zapewnia osiągalną usługę Redis. Usługa zarządzana przez hosting nie wymaga dostępu SSH.
  2. Sprawdź wymaganego klienta PHP w środowisku PHP obsługującym WWW, a nie tylko w CLI PHP. PHP-FPM i CLI mogą ładować różną konfigurację.
  3. Skonfiguruj host, port, uwierzytelnianie, TLS tam, gdzie jest wymagany, bazę i przestrzeń nazw w wybranej integracji. W kontenerach używaj właściwego adresu usługi; localhost oznacza bieżący kontener.
  4. Nadaj każdej instalacji i wymaganemu zakresowi sklepu/grupy wyraźną przestrzeń nazw. Wspólny domyślny prefiks, taki jak ps_, nie izoluje sklepów.
  5. Odwiedź reprezentatywne strony i sprawdź klucze adaptera, TTL oraz odczyty/zapisy.
  6. Przetestuj unieważnianie, awarię połączenia i odzyskiwanie działania w środowisku testowym.

Lokalne przykłady diagnostyczne przy założeniu, że Redis jest celowo dostępny na tym samym hoście na porcie 6379:

redis-cli -h 127.0.0.1 -p 6379 PING
redis-cli -h 127.0.0.1 -p 6379 INFO stats
redis-cli -h 127.0.0.1 -p 6379 INFO memory
redis-cli -h 127.0.0.1 -p 6379 -n 0 DBSIZE

Stosuj wymagania uwierzytelniania i transportu swojej usługi. PONG potwierdza osiągalność, a nie to, że PrestaShop korzysta z Redis. Niezerowa liczba kluczy może należeć do innej aplikacji. Sprawdź przestrzeń nazw i aktywność wybranej integracji. Trafienia i chybienia całej instancji nie określają korzyści jednego sklepu.

Używaj SCAN ze znanym prefiksem do kontrolowanej inspekcji. MONITOR może ujawnić dane poleceń i zwiększać narzut; ogranicz jego użycie do krótkiej diagnostyki w kontrolowanym środowisku.

Redis Cache Manager & Monitor zapewnia administracyjne testowanie połączenia, monitorowanie i zarządzanie przestrzeniami nazw oraz kluczami; jego pomoc opisuje procesy obsługi modułu.

Adaptery pamięci podręcznej aplikacji, konfiguracja sesji PHP i buforowanie całych stron pozostają oddzielnymi pracami integracyjnymi. Zapisany przełącznik lub udane połączenie w panelu nie dowodzą zmiany pamięci podręcznej aplikacji. Jeśli oczekiwana przestrzeń nazw pozostaje pusta, sprawdź wybraną bazę, prefiks i kwalifikację stron, zanim zwiększysz pojemność. Sprawdź błędy połączenia w środowisku WWW i konfigurację adaptera; sama instalacja rozszerzenia PHP nie dodaje Redis do natywnego selektora.

Memcached to inna opcja pamięci podręcznej w RAM, z innym zestawem funkcji. Zarówno Redis, jak i Memcached mogą mieć oddzielnie skonfigurowane mechanizmy obsługi sesji PHP. Wybieraj na podstawie obsługiwanych adapterów, potrzeb operacyjnych i pomiarów, zamiast zakładać, że jedno rozwiązanie jest zawsze szybsze.

Rozdziel sesje, usuwanie kluczy i trwałość danych

Koszyki PrestaShop to rekordy bazy danych. Tożsamość klienta obejmuje również pliki cookie PrestaShop i rekordy przechowywane w bazie. Sesje PHP/Symfony to kolejna warstwa. Przeniesienie sesji PHP do Redis nie przenosi rekordów koszyka ani nie gwarantuje ciągłości zalogowania klientów.

Jeśli zmieniasz mechanizm obsługi sesji PHP, postępuj zgodnie ze wskazówkami konfiguracji phpredis dla zainstalowanej wersji i zastosuj je do właściwej puli PHP-FPM. Sprawdź, gdzie framework aplikacji oczekuje konfiguracji sesji.

Określ TTL sesji, blokowanie, uwierzytelnianie, pojemność, trwałe zapisywanie i zachowanie przy awarii. Sesje w Redis nadal mogą wymagać blokad, aby współbieżne żądania nie nadpisywały stanu. Testuj równoległe żądania tej samej sesji i różnych sesji.

Oddzielne numery baz Redis pomagają rozróżniać klucze, ale współdzielą pamięć instancji, politykę usuwania kluczy i narażenie na awarie. Czyszczenie pamięci podręcznej może naruszyć sesje, jeśli zakres jest niewłaściwy. Preferuj osobno udostępnioną usługę sesji, gdy wymagają one innej polityki trwałości i usuwania.

Polityki usuwania kluczy Redis dotyczą instancji. volatile-lru usuwa klucze z TTL, co może obejmować sesje. Nie chroni ich. Świadomie wybierz politykę usuwania z pamięci podręcznej i monitoruj błędy zapisu, jeśli stosujesz politykę bez usuwania.

Dla sesji wyraźnie wybierz trwały zapis RDB/AOF, replikację i cele odzyskiwania. Trwałe zapisywanie ogranicza niektóre scenariusze utraty, ale nie gwarantuje zerowej utraty danych ani nieprzerwanego zalogowania.

W sklepie z równoważeniem obciążenia sprawdź, czy każdy węzeł WWW korzysta z właściwego współdzielonego mechanizmu i zgodnej przestrzeni nazw. Przećwicz ścieżkę przechodzącą między węzłami. Sam współdzielony magazyn sesji PHP nie naprawi niespójnej konfiguracji aplikacji, zakresu cookies ani sekretów i nie zastąpi bazy przechowującej koszyki.

Dobierz pamięć Redis na podstawie zmierzonej liczby kluczy, rozmiarów danych, wariantów, TTL i szczytowego wykorzystania. Obserwuj used_memory, used_memory_peak, maxmemory, evicted_keys, odrzucone zapisy i połączenia. Usuwanie kluczy może być oczekiwane w ograniczonej pamięci podręcznej z danymi możliwymi do odtworzenia; oceniaj je razem z opóźnieniami i wzorcami trafień. Nie istnieje wzór pamięci według rozmiaru katalogu ani uniwersalny docelowy wskaźnik trafień 90%.

Oblicz współczynnik trafień w oknie obserwacji jako przyrost keyspace_hits podzielony przez sumę przyrostów keyspace_hits i keyspace_misses, pomijając okna z resetem liczników lub bez odczytów. Liczniki obejmują całą instancję Redis, a nie tylko sklep. Niski poziom ponownego wykorzystania może wynikać z wielu wariantów kraju i waluty lub rzadko odwiedzanych adresów URL. Powiąż go z wygasaniem wpisów, importami, czyszczeniem i presją na pamięć, zanim zwiększysz maxmemory. Porównuj connected_clients z ruchem i błędami połączeń; sam wzrost nie dowodzi wycieku.

Skonfiguruj Cloudflare lub Varnish wokół aplikacji

Domyślne buforowanie Cloudflare dotyczy przede wszystkim kwalifikujących się zasobów statycznych; buforowanie HTML wymaga świadomej konfiguracji. Zacznij od dostarczania zasobów statycznych i potwierdź, że żądania dynamiczne pozostają prywatne. Używaj TLS Full (Strict) z ważnym certyfikatem serwera źródłowego i pasującą nazwą hosta. Tryb Flexible używa HTTP do serwera źródłowego i może kolidować z przekierowaniami HTTPS.

  • Wyłącz koszyk, finalizację zakupu, konto, panel administracyjny, API, AJAX i wywołania zwrotne płatności ze współdzielonego buforowania HTML.
  • Respektuj dyrektywy private/no-store i zachowanie Set-Cookie. Testuj faktyczne reguły brzegowe, a nie tylko nagłówki serwera źródłowego.
  • Pozostaw rekordy DNS związane z pocztą bez proxy tam, gdzie wymaga tego usługa pocztowa.
  • Odtwarzaj prawdziwe adresy odwiedzających tylko z zaufanych serwerów proxy Cloudflare. Nie ufaj dowolnemu nagłówkowi przekazującemu adres, dostarczonemu przez klienta.
  • Testuj reguły WAF i botów z wywołaniami zwrotnymi płatności, składaniem zamówień i integracjami.
  • Wyłącz Rocket Loader lub jawnie wyklucz z niego skrypty finalizacji zakupu, jeśli zmienia wymaganą kolejność skryptów; przetestuj cały proces.

Kontrolowana integracja HTML z CDN może oznaczać do buforowania tylko uprawnione anonimowe odpowiedzi GET/HEAD i wysyłać nagłówki pomijania w innych kontekstach. Skonfiguruj obsługiwane mechanizmy czyszczenia i sprawdź aktualne możliwości konta. Same nagłówki nie dowodzą, że serwer brzegowy zapisał odpowiedź w pamięci podręcznej lub pominął buforowanie.

Varnish to reverse proxy HTTP. Przy trafieniu może odpowiedzieć przed uruchomieniem PHP. Wymaga reguł metod, plików cookie, kluczy pamięci podręcznej, odpowiedzi prywatnych, unieważniania i zachowania przy awarii. Wiele wdrożeń kończy TLS w osobnym komponencie. Dynamiczne fragmenty to opcjonalna praca implementacyjna.

Dodaj reverse proxy, gdy zmierzony ruch anonimowy lub wyczerpanie dostępnych procesów PHP uzasadnia jego utrzymywanie. Nie usunie ono pracy finalizacji zakupu bez pamięci podręcznej. Zapewnij serwerowi źródłowemu wydajność na chybienia, czyszczenie i awarie oraz zabezpiecz endpointy unieważniania.

Czyść i diagnozuj właściwą pamięć podręczną

Zacznij od Zaawansowane > Wydajność > Wyczyść pamięć podręczną. Zapisz diagnozowany objaw. Odświeżenie przeglądarki nie czyści pamięci serwera źródłowego, OPcache ani pamięci brzegowych.

  1. W miarę możliwości korzystaj ze środowiska testowego. Zmieniaj lub pomijaj po jednej warstwie.
  2. Wyczyść obsługiwane pamięci podręczne aplikacji i sprawdź stronę bezpośrednio na serwerze źródłowym przez autoryzowaną ścieżkę diagnostyczną.
  3. Unieważnij odpowiednią osobną przestrzeń nazw modułu lub Redis.
  4. Resetuj webowy OPcache tylko wtedy, gdy wymaga tego wdrożenie. Wywołanie CLI opcache_reset() zwykle nie resetuje puli PHP-FPM obsługującej WWW.
  5. Wyczyść odpowiednie wpisy proxy/CDN po potwierdzeniu poprawności serwera źródłowego.
  6. Sprawdź ponownie nowe żądanie anonimowe i żądanie personalizowane, a następnie przywróć zamierzone ustawienia.

var/cache/prod i var/cache/dev nadal obsługują pamięci frameworka i Smarty po zainstalowaniu osobnego adaptera Redis. Starsze układy 1.6 używają cache/smarty; starszy CacheFs używa cache/cachefs. Przed czyszczeniem systemu plików potwierdź dokładną wersję i katalog główny.

Preferuj obsługiwaną operację czyszczenia pamięci podręcznej. Jeśli odzyskiwanie wymaga ręcznego czyszczenia, odizoluj witrynę, zachowaj strukturę katalogów i kontrolę dostępu, działaj jako użytkownik aplikacji i sprawdź właściciela oraz odbudowę pamięci podręcznej. Nie stosuj rekurencyjnego usuwania bez określonego zakresu z niepewnego katalogu roboczego.

Używaj unieważniania przestrzeni nazw uwzględniającego integrację. FLUSHDB usuwa każdy klucz w wybranej bazie; FLUSHALL usuwa wszystkie bazy w instancji. Żadne z tych poleceń nie jest bezpiecznym zamiennikiem czyszczenia ograniczonego do sklepu na współdzielonej infrastrukturze.

Jeśli buforowanie zwraca nieprawidłowe ceny, dane osobowe lub stan finalizacji zakupu, pomijaj odpowiednią warstwę do czasu poprawienia i zweryfikowania. Ustawienia pamięci podręcznej na produkcji powinny wynikać z poprawności i zmierzonego obciążenia, zamiast z bezwarunkowej zasady pozostawiania każdej pamięci włączonej.

Mierz wydajność i usprawniaj pracę bez pamięci podręcznej

Rejestruj odpowiedzi z zimnej i rozgrzanej pamięci dla tych samych URL, danych, języka, waluty, urządzenia i stanu zalogowania. Uwzględnij współbieżność, obciążenie serwera źródłowego i status pamięci podręcznej. Porównuj zwykłe przeglądanie z żądaniami koszyka i finalizacji zakupu. Mierz wielokrotne próby zamiast pojedynczego żądania.

TTFB mierzy opóźnienie do rozpoczęcia odpowiedzi. Pomaga diagnozować ładowanie, ale nie jest wskaźnikiem Core Web Vitals. Core Web Vitals to LCP, INP i CLS. Podawaj LCP i INP jako czas, CLS jako wartość bez jednostki, a wynik wydajności Lighthouse oddzielnie. Lepsze wyniki nie gwarantują pozycji w wyszukiwarce.

Używaj starszego profilera PrestaShop dla zwykłych żądań tradycyjnego frontu sklepu, na chronionym środowisku testowym. Używaj profilowania Symfony dla żądań obsługiwanych przez Symfony. Produkcyjny APM, logi wolnych zapytań i metryki serwera WWW mogą pomóc bez ujawniania strony debugowania.

  • Profiluj kosztowne hooki, powtarzające się zapytania i bieżące wywołania zewnętrzne. Buforuj tylko dane, dla których możesz określić świeżość i zakres.
  • Dodaj brakujące indeksy i popraw kosztowne zapytania. Przed czyszczeniem logów, rekordów poczty lub danych połączeń zastosuj politykę retencji.
  • Używaj obsługiwanych ustawień kompilacji Smarty i w razie potrzeby czyść skompilowane szablony po wdrożeniu.
  • Włącz i dobierz rozmiar OPcache dla środowiska WWW. JIT jest odrębny i wymaga pomiarów aplikacji. Jeśli walidacja znaczników czasu jest wyłączona, niezawodnie resetuj OPcache podczas wdrożenia.
  • Wybieraj PHP według macierzy zgodności dokładnej wersji. PrestaShop 1.7.8 oficjalnie nie obsługuje PHP 8.
  • Dostrajaj MySQL do obciążenia i łącznego budżetu pamięci. MySQL 8.0.30+ używa innodb_redo_log_capacity; MariaDB i starsze wersje MySQL różnią się.
  • Testuj optymalizację CSS/JavaScript, krytyczny CSS, obrazy responsywne i skrypty zewnętrzne. Rezerwuj wymiary obrazów i miejsce dynamicznego interfejsu, aby ograniczyć przesunięcia układu.

Jeśli po włączeniu pamięci podręcznej to samo żądanie pozostaje wolne, profiluj także jej mechanizmy: budowanie kluczy, serializacja, blokady i powtarzane obliczanie skrótów zasobów mogą zwiększać pracę podczas obsługi żądania. Porównaj ten koszt z zaoszczędzoną pracą, również przy chybieniu.

Pamięć podręczna może ograniczać powtarzaną pracę, podczas gdy chybienia nadal są wolne. Zachowaj ją, jeśli bezpiecznie poprawia zmierzoną wydajność; usuwaj lub zastępuj dopiero po sprawdzeniu wynikowego obciążenia i komfortu klientów.

Przećwicz wdrożenie i przekaż procedurę odtwarzania

  1. Zapisz bieżące ustawienia, czasy żądań i status pamięci podręcznej dla reprezentatywnych stron głównej, kategorii i produktu oraz koszyka i finalizacji zakupu. Zachowaj dokładne konteksty testowe, aby dało się powtórzyć porównanie.
  2. Na kopii testowej rozgrzej zamierzone warianty publiczne. Używaj osobnych profili przeglądarki dla anonimowych odwiedzających oraz klientów z różnych grup lub używających różnych walut. Sprawdź działanie koszyka, logowania i spersonalizowanego nagłówka oraz treść strony.
  3. Przeprowadź aktualizacje przez panel administracyjny, zaplanowane promocje i każdy używany import lub integrację. Porównaj pamięć aplikacji i kopie proxy/CDN z oczekiwanymi aktualnymi danymi.
  4. Przećwicz czyszczenie i przeglądanie zimnej pamięci przy reprezentatywnej liczbie równoczesnych użytkowników. Następnie odłącz Redis lub usługę pamięci stron w kontrolowanym środowisku i sprawdź błędy, obciążenie po przejściu na tryb zastępczy oraz odtwarzanie oddzielnie dla każdej włączonej warstwy.
  5. Ustal okno wdrożenia, warunek wycofania i osobę odpowiedzialną. Zastosuj przetestowaną konfigurację, unieważnij lub rozgrzej tylko zamierzony zakres i sprawdź rzeczywiste przeglądanie, zakupy oraz następny import po wdrożeniu.

Wycofanie zmiany dotyczącej odtwarzalnego HTML w pamięci podręcznej może polegać na ominięciu warstwy i usunięciu jej kopii. Wycofanie mechanizmu sesji wymaga osobnej procedury: poprzedni magazyn może nie zawierać sesji utworzonych po przełączeniu. Ustal oczekiwania dotyczące ciągłości przed zmianą mechanizmu i przećwicz oba kierunki. Nie zastępuj bazy produkcyjnej bazą testową w celu wdrożenia konfiguracji pamięci podręcznej.

O co zapytać programistę lub agencję

  • Która warstwa się zmienia, gdzie trafienie zatrzymuje przetwarzanie i co wykonuje się dalej?
  • Które konteksty żądań uwzględnia klucz, a które omijają pamięć, i gdzie są dowody, że prywatna treść nie trafia do współdzielonego magazynu?
  • Które aktualizacje unieważniają poszczególne kopie i kto odpowiada za unieważnianie przy importach ERP i zaplanowanych promocjach?
  • Co dzieje się podczas czyszczenia, awarii pamięci podręcznej lub wycofania mechanizmu sesji i czy serwer źródłowy wytrzyma powstałe obciążenie?
  • Gdzie zapisano dla pracowników przetestowane ustawienia, mapę przestrzeni nazw, monitorowanie, instrukcje czyszczenia określonego zakresu i procedurę odtwarzania?

Pytania właścicieli sklepów

Którą pamięć podręczną kupić najpierw?

Wybieraj na podstawie wolnego żądania i powtarzanej przez nie pracy. Poproś o pomiar bazowy i odwracalną próbę przed zakupem infrastruktury lub kolejnego modułu. Jeśli diagnoza jest niejasna, uporządkuj pomiary z pomocą poradnika wydajności.

Czy Redis zastępuje OPcache lub bazę danych?

Nie. OPcache ponownie wykorzystuje skompilowany kod PHP; integracja Redis wykorzystuje wybrane wartości lub przechowuje sesje. Baza nadal zawiera dane sklepu, a żądania bez pamięci podręcznej nadal potrzebują odpowiedniej wydajności.

Dlaczego kolejna wizyta jest szybka, a nowy odwiedzający nadal czeka?

Powtórna wizyta może trafiać w pamięć przeglądarki, stron lub danych, której nowe żądanie nie wykorzystuje. Sprawdź rzeczywisty status pamięci i kontekst odwiedzającego, a następnie porównaj wyniki zimnej i rozgrzanej pamięci. Twoja własna rozgrzana przeglądarka nie pokazuje doświadczenia pierwszej wizyty.

Czy podczas awarii pozostawić włączone wszystkie pamięci podręczne?

Omiń warstwę serwującą nieprawidłowe lub prywatne treści, a następnie zbadaj ją, porównując z wynikiem bez pamięci podręcznej. Kontroluj obciążenie serwera źródłowego, gdy obsługuje więcej żądań, i przywróć przetestowane zasady po usunięciu błędu.

Czy po optymalizacji sklepu mogę usunąć pamięć całych stron?

Najpierw przetestuj jej pomijanie na kopii testowej przy reprezentatywnym obciążeniu. Zachowaj ją lub usuń na podstawie poprawności, przepustowości w szczycie i doświadczeń klientów; sama szybsza strona bez pamięci podręcznej nie dowodzi obsługi szczytowego ruchu.

Ładowanie...
Do góry