Cachelagring af en WooCommerce-butik uden at ødelægge indkøbskurven
Fuldsides caching og en levende indkøbskurv lyder som svorne fjender – indtil du omgår de rigtige cookies. Her er præcis, hvordan man får en WooCommerce-butik til at flyve, mens betalingen fortsætter med at fungere perfekt.
En WooCommerce-butik er stort set identisk for alle shoppere – og den del kan cachelagres ved kanten for øjeblikkelige belastninger. Kurven, checkout-siden og kontosiden er personlige, så du kan omgå cachen for dem ved at registrere WooCommerces sessionscookies. Cache kataloget, omgå indkøbskurven, og du får en butik, der føles øjeblikkelig uden et eneste plugin.
Spørg nogen, hvorfor de ikke har lagt deres WooCommerce-butik bag en cache, og du får normalt det samme svar: "Jeg kan ikke - min vogn er dynamisk." Det er en rimelig bekymring. Ingen ønsker, at en kunde tilføjer tre varer, trykker på checkout og ser en tom indkøbskurv, fordi en gammel side blev serveret. Men den frygt holder mange butikker langsomme uden nogen god grund, fordi indsigelsen kan løses på omkring to minutter.
Tricket er ikke at cache mindre. Det er at cachelagre de 95% af din butik, der er ens for alle, og være præcis omkring de 5%, der ikke er.
Hvorfor WooCommerce er langsom i første omgang
WooCommerce er WordPress med en seriøs e-handelsmotor boltet på, og den motor gør meget arbejde. For hver enkelt sidevisning vågner PHP, kører dit tema og en stak plugins, laver en bunke databaseforespørgsler, beregner, hvad der skal vises, og sender først derefter HTML. For én besøgende, der kigger på en stille eftermiddag, er det fint. For hundrede kunder på én gang under en kampagne bliver det arbejde pr. side det, der tipper din server.
Her er sagen: Denne produktside har ikke ændret sig i uger. Det er rent spild at genopbygge det fra bunden for alle besøgende. Fuldsides caching gemmer den færdige HTML på kanten og serverer den kopi direkte, så PHP og databasen får en pause, og din shopper får en side i millisekunder.
Indsigten: Det meste af din butik er ens for alle
Gå gennem din butik som en udlogget besøgende. Hjemmesiden, kategorilisterne, hver produktside – de ser ens ud, uanset hvem der ser dem. Det er det cachevenlige flertal. De eneste sider, der varierer pr. person, er dem, der er knyttet til en session: indkøbskurven, kassen og kontoområdet.
Hvad skal cache, og hvad skal man omgå
| Side | Cache det? | Hvorfor? |
|---|---|---|
| Hjemmeside, kategorier, produkter | Ja, ja | Identisk for enhver kunde |
| Søgeresultater, blog, CMS sider | Normalt | Samme indhold til alle |
| Kurv | Aldrig | Unik til shopperens session |
| Check ud | Aldrig | Levende totaler, betaling, adresser |
| Min konto / ordrehistorik | Aldrig | Personligt og privat |
Sådan fungerer bypass faktisk
Så hvordan ved kanten, om en anmodning er "bare browsing" eller "har en vogn"? Cookies. I det øjeblik en kunde tilføjer noget til deres indkøbskurve eller logger ind, sætter WooCommerce specifikke cookies i deres browser. En cache, der forstår disse cookies, kan automatisk foretage det rigtige opkald ved hver anmodning.
En ny besøgende kommer
Ingen WooCommerce-sessionscookies endnu, så de får den hurtige cachelagrede katalogside – serveret fra kanten på få millisekunder.
De tilføjer noget til vognen
WooCommerce sætter en indkøbscookie. Fra nu af ser kanten den cookie og omgår cachen for dem, der serverer levende sider.
De tjekker ud
Indkøbskurv, betaling og kontoanmodninger springer cachen helt over, så totaler, forsendelse og betaling altid er levende og korrekte.
De cookies, der betyder noget, er de sædvanlige WooCommerce-mistænkte – ting som f.eks woocommerce_cart_hash, woocommerce_items_in_cart og den indloggede sessionscookie. Du behøver ikke at huske dem: forudindstillingen kender allerede listen.
Forudindstillingen med ét klik
Du kan konfigurere alt dette i hånden liste cookies, indstille bypass stier til /cart, /checkout og /my-account, teste hver kant tilfælde. Eller du kan vælge forudindstillingen til WooCommerce-acceleratoren, som sætter det hele op for dig. Den kender cookies, den kender stierne, og den giver dig et katalog, der er fuldt cachelagret, og en kasse, der er fuldt levende.
Hvad du beholder
- Instant produkt- og kategorisider
- En levende, altid korrekt vogn
- Indloggede kunder ser deres egne priser
Hvad du taber
- PHP- og databasebelastning pr. besøg
- "Er min cache sikker?" angst
- Endnu et caching-plugin til babysit
Glem ikke produktbillederne
En sejr mere, mens du er her, fordi det ofte er den største. En butik lever og dør på sine produktfotos, og disse billeder er normalt de tungeste ting på siden. Konvertere dem til WebP eller AVIF og ændre størrelsen på dem til den størrelse, der faktisk vises - i farten, på kanten - gør ofte mere for opfattet hastighed end nogen backend-ændring.
En note på Black Friday
Denne opsætning handler ikke kun om hverdagens hastighed – det er det, der gør, at en lille butik kan overleve sin største dag. Når trafikken går 10x, cachelagrede katalogsider tager næsten alt af denne belastning fra din oprindelse, så din server er fri til at håndtere de ting, der rent faktisk tjener penge: vogne og kasser. Tilføj et valgfrit venteværelse foran, og selv en efterspørgselsstigning ud over din kapacitet bliver en velordnet kø i stedet for et nedbrud.
"Min indkøbskurv er dynamisk" er ikke en grund til at springe cache over det er en grund til at cachelagre præcist. Cache kataloget på kanten, omgå cachen for indkøbskurv, checkout og logget ind sessioner ved hjælp af WooCommerce egne cookies, og optimere disse produktbilleder. Du beholder alle butikkens funktioner og mister trægheden, alt sammen uden at installere noget.
Hvis du vil have den korte vej, anvender WooCommerce CDN-opsætningen denne forudindstilling for dig, og Siteacceleratorer den samme idé til WordPress, PrestaShop og brugerdefinerede platforme.
Mads har arbejdet med IT – mest som vært – 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 og sikker infrastruktur enkel at bruge.