Cachelagring av en WooCommerce-butik utan att förstöra kundvagnen
Cachelagring på hela sidan och en levande kundvagn låter som svurna fiender – tills du kringgår rätt cookies. Här är exakt hur man gör en WooCommerce-butik flyga medan kassan fortsätter att fungera perfekt.
En WooCommerce-butik är mestadels identisk för varje kund – och den delen kan cachas vid kanten för omedelbar belastning. Varukorgen, kassan och kontosidorna är personliga, så du förbigår cachen för dem genom att upptäcka WooCommerce sessionscookies. Cache katalogen, förbi vagnen, och du får en butik som känns omedelbar utan en enda plugin.
Fråga vem som helst varför de inte har lagt sin WooCommerce-butik bakom en cache och du får vanligtvis samma svar: "Jag kan inte - min vagn är dynamisk." Det är en rimlig oro. Ingen vill att en kund ska lägga till tre varor, gå till kassan och se en tom kundvagn eftersom en gammal sida har blivit serverad. Men den rädslan håller många butiker långsamma utan någon bra anledning, eftersom invändningen kan lösas på ungefär två minuter.
Tricket är inte att cacha mindre. Det är att cacha de 95% av din butik som är lika för alla, och vara exakt om 5% som inte är det.
Varför WooCommerce är långsam i första hand
WooCommerce är WordPress med en seriös e-handelsmotor bultad på, och den motorn gör mycket arbete. För varje enskild sidvisning vaknar PHP, kör ditt tema och en stack av plugins, gör en hög med databasfrågor, beräknar vad som ska visas och skickar sedan HTML. För en besökare som surfar på en lugn eftermiddag, det är bra. För hundra kunder samtidigt under en kampanj blir det arbetet per sida det som tippar din server över.
Här är saken: den produktsidan har inte ändrats på veckor. Att bygga om den från grunden för varje besökare är rent slöseri. Fullsidig caching sparar den färdiga HTML-koden vid kanten och tjänar den kopian direkt, så PHP och databasen får en paus och din shopper får en sida i millisekunder.
Insikten: det mesta av din butik är likadan för alla
Gå igenom din butik som en utloggad besökare. Hemsidan, kategorilistorna, varje produktsida – de ser likadana ut oavsett vem som tittar på dem. Det är den cachebara majoriteten. De enda sidorna som skiljer sig åt per person är de som är knutna till en session: kundvagnen, kassan och kontoområdet.
Vad man ska cachea och vad man ska kringgå
| Sida | Cache? | Varför? |
|---|---|---|
| Hemsida, kategorier, produkter | Ja, ja | Identisk för varje kund |
| Sökresultat, blogg, CMS-sidor | Vanligtvis | Samma innehåll för alla |
| Varukorg | Aldrig | Unikt för shopparens session |
| Utcheckning | Aldrig | Live totals, betalning, adresser |
| Mitt konto / orderhistorik | Aldrig | Personligt och privat |
Hur bypass fungerar
Så hur vet kanten om en begäran är "bara surfar" eller "har en kundvagn"? Kakor. När en kund lägger till något i sin kundkorg eller loggar in, sätter WooCommerce specifika cookies i sin webbläsare. En cache som förstår dessa cookies kan automatiskt ringa rätt samtal vid varje begäran.
En ny besökare kommer
Inga WooCommerce-sessionscookies ännu, så de får den snabba cachelagrade katalogsidan – serverad från kanten på millisekunder.
De lägger till något i vagnen
WooCommerce sätter en varukorgscookie. Från och med nu ser kanten den cookien och förbigår cacheminnet för dem och serverar levande sidor.
De kollar upp
Varukorg, kassa och kontoförfrågningar hoppar över cacheminnet helt, så totaler, frakt och betalning är alltid levande och korrekt.
De cookies som spelar roll är de vanliga WooCommerce-misstänkta – saker som: woocommerce_cart_hash, woocommerce_items_in_cart och den inloggade sessionscookien. Du behöver inte memorera dem: förinställningen känner redan till listan.
Förinställningen med ett klick
Du kan konfigurera allt detta för hand - lista cookies, ställ in bypassvägar för /cart, /checkout och /my-account, testa varje kantfodral. Eller så kan du välja förinställningen för WooCommerce-acceleratorn, som ställer in allt åt dig. Den känner till kakorna, den känner till sökvägarna och den lämnar dig med en katalog som är helt cachad och en kassa som är helt levande.
Vad du behåller
- Direkta produkt- och kategorisidor
- En levande, alltid rätt vagn
- Inloggade kunder ser sina egna priser
Vad du tappar
- PHP och databasbelastning per besök
- "Är min cache säker?" ångest
- Ännu ett cacheprogram för att sitta barnvakt
Glöm inte produktbilderna
En vinst till medan du är här, för det är ofta den största. En butik lever och dör på sina produktbilder, och dessa bilder är vanligtvis det tyngsta på sidan. Konvertera dem till WebP eller AVIF och ändra storlek på dem till den storlek som faktiskt visas - i farten, på kanten - gör ofta mer för upplevd hastighet än någon backend förändring.
En lapp på Black Friday
Den här inställningen handlar inte bara om vardagens hastighet – det är det som gör att en liten butik kan överleva sin största dag. När trafiken går 10x tar cachade katalogsidor nästan all den belastningen av ditt ursprung, så din server är fri att hantera det som faktiskt tjänar pengar: vagnar och kassar. Lägg till ett valfritt väntrum framför, och även en efterfrågetopp utöver din kapacitet blir en ordnad kö istället för en krasch.
"Min vagn är dynamisk" är inte en anledning att hoppa över cachelagring – det är en anledning att cacha exakt. Cache katalogen vid kanten, förbi cache för kundvagn, kassan och inloggade sessioner med WooCommerce egna cookies, och optimera dessa produktbilder. Du behåller varje bit av butikens funktionalitet och förlorar trögheten, allt utan att installera någonting.
Om du vill ha den korta vägen, WooCommerce CDN inställningen gäller den här förinställningen för dig, och Webbplatsacceleratorer täcker samma idé för WordPress, PrestaShop och anpassade plattformar.
Se hur NordicCDN gör detta för din webbplats:
Mads har arbetat inom IT – mestadels som värd – sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till förvärvet av Visma, har byggt och drivit datacenternätverk och fungerat som CTO för ett danskt datacenter. Han startade NordicCDN för att göra snabb och säker infrastruktur enkel att använda.