PrestaShop ydeevne: cache en dynamisk butik på den rigtige måde
PrestaShop giver dig en seriøs butik ud af kassen, og en seriøs mængde arbejde pr. side for at gå med det. Hvordan man gør det hurtigt uden at bryde de dynamiske bits.
PrestaShop samler hver side fra PHP, Smarty skabeloner og en travl database, hvorfor store kataloger bliver træge. Cache kataloget - hjem, kategorier, produkter - på kanten, og omgå cachen, når PrestaShop session cookie er til stede, så indkøbsvogne, kassen og kundekonti forbliver live. Hold øje med butikker med flere valutaer og flere sprog, som har brug for cachenøglen for at inkludere disse dimensioner.
PrestaShop er en ordentlig e-handelsplatform: multi-store, multi-valuta, multi-sprog, og et modul økosystem, der med glæde vil lade dig installere tredive ting. Alle disse muligheder har en pris, og prisen normalt dukker op, når kataloget passerer et par hundrede produkter og nogen spørger, hvorfor kategori sider tager to sekunder.
Hvor tiden går
Hver PrestaShop side er samlet på efterspørgslen. PHP støvler, Smarty skabelon motor gør, moduler køre deres kroge, og databasen er queried ofte tungt, fordi lagdelt navigation, prisregler, lager og kombinationer alle skal løses før siden kan trækkes.
De specifikke ting, der har tendens til at gøre ondt, i nogenlunde den rækkefølge, de vises som en butik vokser:
- Lagdelt navigation på store kategorier. Fasetteret filtrering er dyrt, og forespørgslerne vokser med dit attributantal.
- Produktkombinationer. Et produkt med fem størrelser og seks farver er tredive kombinationer at løse, hver med sin egen pris og lager.
- Særlige prisregler. Hver pris, der vises, kan have brug for katalogprisregler evalueret i forhold til den aktuelle kundegruppe, valuta og land.
- Modul kroge kører på hver side. Moduler registrere kroge, brand, uanset om siden bruger dem, og ingen audits dem.
- Billede regenerering. Miniature regenerering efter en tema ændring er en velkendt måde at besætte en server i timevis.
Intet af dette er en defekt. Det er det, der gør PrestaShop i stand. Det er bare arbejde, der gentages for hver besøgende, herunder den tusinde besøgende på en produktside, der ikke har ændret sig siden marts.
Splittet, der gør caching sikkert
| Side | Cache det? | Bemærk |
|---|---|---|
| Hjemmeside, kategorier, produktsider | Ja. | Størstedelen af din trafik |
| CMS-sider, producent- og leverandørlister | Ja. | Sjældent ændring |
| Søgeresultater | Normalt | Kort TTL; normaliser forespørgselsparameteren |
| Lagdelte navigationsresultater | Forsigtigt | Cacheable, men se antallet af filterkombinationer |
| Kurv og checkout | Aldrig | Personlig pr. definition |
| Min konto, ordrehistorik, adresser | Aldrig | Personoplysninger |
| Alt under admin-mappen | Aldrig | Bypass helt |
At få bypasset rigtigt
Hele tricket er at genkende, når en besøgende er "i session" i stedet for bare at browse. PrestaShop sætter en session cookie navngivet PrestaShop- efterfulgt af en hash, der er unik for din installation - når en shopper har en indkøbskurv eller logger ind. Omgå cachen, når den cookie er til stede, og alt virker: anonyme browsere får cachelagrede sider, alle med en vogn får en levende.
To ting, der fanger folk:
Må ikke omgå på cookien blot eksisterende i en eller anden form. Nogle konfigurationer indstiller en sessionscookie ved første besøg uanset aktivitet, hvilket betyder, at ingen nogensinde får en cachelagret side, og dit hitforhold sidder tæt på nul, mens du spekulerer på, hvad der gik galt. Kontroller, om din installation giver anonyme besøgende denne cookie, før du stoler på dens tilstedeværelse.
Fjern sporingsparametrene. PrestaShop butikker tiltrækker en masse kampagne trafik, og ?utm_source= varianter fragment din cache dårligt. Fjern dem fra cache-nøglen.
Multi-valuta og multi-sprog fælde
Denne ene er specifik for PrestaShop, og det er værd at mere opmærksomhed, end det normalt får, fordi at få det forkert viser en dansk shopper priser i euro - eller værre, viser en engros kundegruppe detailpriser.
PrestaShop løser sprog, valuta og kundegruppe pr. anmodning, ofte fra cookies. Hvis din cachenøgle ikke indeholder disse dimensioner, fylder den første besøgende, der anmoder om en side, cachen med deres version og alle efter at modtage det.
Løsningen er enten at inkludere de relevante cookies i cachenøglen - så hver valuta og sprog får sin egen cachekopi - eller at bruge forskellige webadresser pr. Sprog og valuta, hvilket er bedre for SEO alligevel. Multi-shop installationer har også brug for butiksdimensionen i nøglen.
Test dette med vilje, før du går live. Åbn butikken i en browser, skift valuta, og åbn den derefter i et nyt inkognitovindue og tjek hvilken valuta du får. Det tager halvfems sekunder, og det fanger den mest skadelige caching fejl en PrestaShop kan gøre.
Renser når tingene ændrer sig
Et cachelagret katalog skal ugyldiggøres, når kataloget ændres. Prisopdateringer, lagerændringer og nye produkter har alle brug for de berørte sider renset, eller shoppere ser gårsdagens priser - hvilket er et kundeserviceproblem og afhængigt af hvor du handler, potentielt en lovlig.
Praktisk tilgang: Rens den specifikke produktwebadresse og dens kategorisider om produktbesparelse, rens stort set efter en bulkimport og hold produktside TTL'er beskedne - en time i stedet for en dag - så alt, hvad en udrensning går glip af korrigerer sig selv hurtigt. Hvis du viser live lageroptællinger, skal du enten udelukke det pågældende fragment fra siden eller acceptere, at lagervisningen forsinker din TTL.
Og billederne
En PrestaShop-butik lever og dør på produktfotografering, og billedvægt er normalt den største enkeltkomponent i sidestørrelse. Konvertering til WebP eller AVIF og ændring af størrelsen på kanten gør rutinemæssigt mere for opfattet hastighed end nogen backend tuning - og i modsætning til at regenerere miniaturebilleder i admin-panelet, behøver det ikke en times servertid og en Bøn.
Ofte stillede spørgsmål
Hvorfor er min PrestaShop hjemmeside langsom?
Fordi hver side er samlet på efterspørgslen fra PHP, Smarty skabeloner og database forespørgsler, og at arbejdet gentages for hver besøgende. Belastningen vokser med kataloget: lagdelt navigation, produktkombinationer, specifikke prisregler og modulkroge, der alle tilføjer forespørgsler pr. side. Caching de sider, der er identiske for alle shoppere fjerner gentagelse i stedet for at optimere det.
Kan jeg bruge helsides caching med PrestaShop?
Ja, til kataloget. Hjemmeside, kategori, produkt og CMS sider er identiske for anonyme besøgende og kan cachelagres på kanten. Kurv, checkout, kundekonto sider og admin område skal altid omgå cachen, som håndteres ved at registrere PrestaShop session cookie og betjener disse besøgende en live side.
Hvilken PrestaShop-cookie skal udløse en cache-bypass?
PrestaShop-sessionscookien, der hedder PrestaShop- efterfulgt af en hash, der er unik for din installation. Dens tilstedeværelse indikerer, at den besøgende har en indkøbskurv eller er logget ind, og cachen skal omgås for disse anmodninger. Kontroller først, om din installation problemer, at cookie til anonyme besøgende på første side indlæses, da hvis det gør, omgå sin tilstedeværelse alene ville forhindre nogen side nogensinde bliver cachelagret.
Hvordan cacher jeg en PrestaShop-butik i flere valutaer?
Medtag valuta og sprog i cachenøglen, enten ved at tilføje de relevante cookies til nøglen, så hver kombination cachelagres separat, eller ved at bruge forskellige webadresser pr. sprog og valuta, hvilket er at foretrække for SEO. Uden dette, den første besøgende til at anmode om en side fylder cachen med deres valuta og hver efterfølgende besøgende modtager det. Multi-shop installationer skal også omfatte butik dimension.
Hvordan forhindrer jeg, at kunderne ser forældede priser fra cachen?
Rens de berørte produkt- og kategoriwebadresser, når et produkt gemmes, rens stort set efter bulkimport, og behold produktside-TTL'er til omkring en time, så alt, hvad en udrensning går glip af, korrigerer sig selv hurtigt. Hvis du viser levende lagerniveauer, skal du enten udelukke det pågældende fragment fra den cachelagrede side eller acceptere, at det vil ligge efter længden af TTL.
Sammendraget er, at PrestaShop er tung af gode grunde og cacheable for bedre. Cache kataloget, omgå sessionscookien, få valuta og sprog ind i cachenøglen, før du går live, og optimere fotograferingen. Du beholder hver eneste del af platformens kapacitet og mister den del, hvor det får folk til at vente.
Mads har arbejdet i IT - for det meste hosting - siden han var 16. Han tog tidligt ejerskab i en SaaS-virksomhed og var med til at udvide den til Visma, har opbygget og drevet datacenternetværk og fungeret som CTO for et dansk datacenter. Han startede NordicCDN for at gøre hurtig, sikker infrastruktur enkel at bruge.