Caching en WooCommerce-butik utan att bryta vagnen
Hela sidan cache 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 shopper - och den delen kan cachas vid kanten för omedelbar belastning. Varukorgen, kassan och kontosidorna är personliga, så du kringgår cacheminnet för dem genom att upptäcka WooCommerces 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 ha en shopper att lägga till tre objekt, slå kassan och se en tom vagn eftersom en gammal sida fick serveras. Men den rädslan håller många butiker långsamma utan någon bra anledning, eftersom invändningen är lösbar på ungefär två minuter.
Tricket är inte att cacha mindre. Det är att cacha 95% av din butik som är samma för alla, och vara exakt om 5% som inte är.
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 det vaknar PHP, kör ditt tema och en stapel av plugins, gör en hög med databasfrågor, beräknar vad som ska visas, och bara sedan skickar HTML. För en besökare som surfar på en lugn eftermiddag, det är bra. För hundra shoppare på en gång under en kampanj blir det per sida arbete det som tipsar din server över.
Här är saken: den produktsidan har inte Förändras på veckor. Att bygga om det från grunden för varje besökare är rent avfall. Cachelagring på helsida 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 på millisekunder.
Insikten: de flesta av din butik är densamma för alla
Gå igenom din butik som en utloggad besökare. Hemsidan, kategorilistorna, varje produktsida - de ser identiska ut oavsett vem som tittar på dem. Det är den cacheable majoriteten. De enda sidorna som skiljer sig per person är de som är knutna till en session: vagnen, kassan och kontoområdet.
Vad man ska cache, och vad man ska kringgå
| Sida | Cache det? | Varför? |
|---|---|---|
| Hemsida, kategorier, produkter | Ja. | Identisk för alla shoppare |
| 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 vagn"? Kakor. När en kund lägger till något i sin korg eller loggar in, sätter WooCommerce specifika cookies i sin webbläsare. En cache som förstår dessa cookies kan göra rätt samtal på varje begäran, automatiskt.
En ny besökare kommer
Inga WooCommerce-sessionscookies ännu, så de får den snabba, cachade katalogsidan - serveras från kanten i millisekunder.
De lägger till något i vagnen
WooCommerce sätter en varukorgscookie. Från och med nu ser kanten den cookien och kringgår cacheminnet för dem, som serverar levande sidor.
De checkar ut
Varukorg, kassa och kontoförfrågningar hoppa ö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 bypass-banorna för /cart, /checkout och /my-account, testa varje kant fall. Eller så kan du välja WooCommerce-acceleratorförinställningen, som ställer in allt för dig. Den känner till kakorna, den känner till vägarna och den lämnar dig med en katalog som är helt cachad och en kassa som är helt levande.
Vad du håller
- Instant produkt- och kategorisidor
- En levande, alltid korrekt vagn
- Inloggade kunder ser sina egna priser
Vad du tappar
- Per-besök PHP och databasbelastning
- "Är min cache säker?" ångest
- Ännu ett cache-plugin till babysit
Glöm inte produktbilderna
En vinst till när 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. Att konvertera dem till WebP eller AVIF och ändra storlek på dem till den storlek som faktiskt visas - i farten, vid kanten - gör ofta mer för upplevd hastighet än någon backend-förändring.
En lapp till Black Friday
Den här inställningen handlar inte bara om vardagens hastighet - det är det som låter en liten butik ö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 till och med en efterfrågan spik utöver din kapacitet blir en ordnad kö i stället för en krasch.
"Min vagn är dynamisk" är inte en anledning att hoppa över cachning - 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 en sak.
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 värd - sedan han var 16. Han tog tidigt del i ett SaaS-företag och hjälpte till att växa fram till Vismas förvärv, 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.