Hoppa till innehållet

Cookieinställningar

Välj vilka typer av cookies du tillåter. Du kan alltid ändra ditt val via Cookieinställningar längst ned på varje sida. Integritetspolicy

Nödvändiga

Alltid på

Behövs för att logga in, spara din varukorg och komma ihåg dina val. De är alltid på.

Vilka cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session och att du förblir inloggad
  • weboke_basket: din varukorg
  • wkBtwIncl: visa priser med eller utan moms
  • wok_cookies: ditt cookieval, 12 månader

Mäter vilken annons som leder till ett besök eller en beställning, så att vi inte betalar för annonser som inte ger något.

Vilka cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), upp till 90 dagar
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: via vilken partner du kom till oss (affiliateprogram), 60 dagar

4,6

Land och språk

Varje land har en egen webbplats med landets priser och moms.

Visa

Hastighet och cache i en butik

Modul 6: Förvaltning och säkerhet · Lästid: 10 minuter

Lärandemål: Efter den här lektionen kan du ställa in cache för en WooCommerce-butik så att butiken är snabb och personliga sidor aldrig hamnar i cachen. Du kan också kontrollera det i HTTP-huvudena.

Nyckelbegrepp: sidcache, undantag (varukorg, kassa, Mitt konto), cookies som går förbi cachen, no-cache-huvuden, DONOTCACHEPAGE, objektcache, Redis, varukorgsfragment, geolokalisering med sidcache, rensa schemalagda åtgärder

Två sorters sidor

Grunderna i cache (sidcache, webbläsarcache, objektcache, OPcache, ett CDN) finns i WordPress-kursen, lektion 6.2. Där står också den viktigaste regeln för butiker: personliga sidor får inte hamna i sidcachen. Den här lektionen går djupare in på det.

En butik har två sorters sidor:

SortExempelCache
Lika för allastartsida, butikssida, kategorier, produktsidor, informationssidorSidcache: ja, här finns den största vinsten
Olika för varje besökarevarukorg, kassa, Mitt konto, ångersidan med en inloggad kundSidcache: aldrig

Går det fel märks det direkt: en kund ser någon annans varukorg, eller ännu värre, någons adress på kassasidan. Det är också en personuppgiftsincident enligt GDPR (KB 6749).

Vad WooCommerce redan gör själv

WooCommerce hjälper en cache på tre sätt. Det är bra att känna till dem, så att du ser när något tar bort dem:

  1. Konstanter. På varukorg, kassa och Mitt konto sätter WooCommerce DONOTCACHEPAGE (och även för objekt- och databascache). Många cachetillägg läser den konstanten och hoppar då över sidan.
  2. Huvuden. På samma sidor skickar WooCommerce med WordPress no-cache-huvuden: Cache-Control: no-cache, must-revalidate, max-age=0, private och en Expires i det förflutna. En proxy eller ett CDN som följer reglerna sparar då inte sidan. För inloggade användare läggs no-store till.
  3. Cookies. Så fort någon lägger något i varukorgen sätter WooCommerce cookies som woocommerce_items_in_cart, woocommerce_cart_hash och wp_woocommerce_session_.... Bra cacher ger inte längre besökare med en sådan cookie en sparad sida, inte heller av produktsidor, eftersom till exempel korgen i sidhuvudet då är olika för varje besökare.

WooCommerce dokumentation säger följande om cachetillägg: undanta varukorg, Mitt konto och kassa, och cookierna woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed och store_notice[...]. För Varnish ger den även regler för adresser med ?add-to-cart=.

Var det går fel i praktiken

  • Andra adresser för butikssidorna. Du har bytt namn på varukorgen till /mandje/ eller så skapar ett översättningstillägg /de/warenkorb/. En cache som undantar fasta adresser som /cart missar dem. Cachetillägg som känner till WooCommerce läser sidorna från inställningarna. En cache på servern eller hos ett CDN gör inte det.
  • Ett CDN som cachar allt. Vissa CDN-regler ("cache everything") struntar i huvudena. Undanta då butikssidorna och de nämnda cookierna uttryckligen.
  • Ett tillägg som skriver över huvudena. Ett säkerhets- eller prestandatillägg sätter ibland Cache-Control: public, max-age=... på varje sida. Då finns no-cache-huvudena inte längre kvar.
  • En session för varje besökare. Normalt sätter WooCommerce en sessionscookie först när det ligger något i varukorgen. Om ett tillägg eller tema startar en session redan för varje besökare (en cookie wp_woocommerce_session_ eller PHPSESSID vid första besöket), försvinner sidcachen för alla och butiken blir långsam när det är mycket trafik.
  • Geolokalisering. Under WooCommerce > Inställningar > Allmänt väljer du kundens standardplats. Med vanlig "Lokalisera" räknar servern ut landet för varje besökare, och vid priser per land passar det inte ihop med en sidcache. WooCommerce har därför alternativet "Lokalisera (med stöd för sidcachning)", som bestämmer landet via en extra förfrågan i webbläsaren. Behöver du inte priser eller moms per land före kassan, välj då butikens land: det är enklast. För geolokalisering laddar WooCommerce regelbundet ner en databas från MaxMind.

På en LiteSpeed-server (som hos WebOké) sköter tillägget LiteSpeed Cache undantagen för WooCommerce själv. Kontrollera dem i inställningarna för undantag. Hos andra webbservrar och webbhotell fungerar det på liknande sätt med ett annat cachetillägg.

Vad sidcachen inte löser

Varukorg och kassa byggs alltid upp av PHP och databasen. När det är mycket trafik (en kampanj, ett nyhetsbrev) är det just de sidorna där dina kunder spenderar pengar. Där hjälper andra saker:

  • En objektcache som Redis sparar resultatet av databasfrågor i minnet. I en butik, med många sidor som inte kan ligga i sidcachen, ger det märkbart mer än på en vanlig webbplats. Ditt webbhotell måste erbjuda Redis (hos WebOké går det, DA 15.7). Sedan slår du på det med ett tillägg.
  • Varukorgsfragment. Klassiska teman uppdaterar korgen i sidhuvudet med ett skript (wc-cart-fragments) som gör en extra förfrågan när varukorgen inte är tom. Moderna blockteman med miniblocket för varukorgen behöver det mindre. Ladda inte sådana skript på sidor där de inte gör något.
  • Rensade schemalagda åtgärder. WooCommerce använder Action Scheduler för bakgrundsuppgifter (lektion 7.3). Slutförda åtgärder rensas som standard efter en månad. Växer listan ändå till hundratusentals, ofta på grund av ett tillägg som hela tiden schemalägger något eller på grund av misslyckade åtgärder, blir databasfrågorna långsammare. Titta under WooCommerce > Status > Schemalagda åtgärder på antalet misslyckade och väntande åtgärder.
  • HPOS. Beställningar i egna tabeller (lektion 1.2) gör sökningar bland beställningar snabbare än i den gamla inläggstabellen. Befintliga butiker måste själva byta (lektion 6.2 om säkerhetskopior i förväg).
  • En aktuell PHP-version och tillräckligt med minne (lektion 7.2).

I praktiken: så ser det ut i WooCommerce

Kontrollera det hos Theehuis Example i ett privat fönster med webbläsarens utvecklarverktyg (F12, fliken Nätverk, första förfrågan):

  1. Startsidan, ladda två gånger: andra gången ett huvud som x-litespeed-cache: hit eller cf-cache-status: HIT. Ingen cookie wp_woocommerce_session_ vid första besöket.
  2. shop.example.com/winkelwagen/, ladda två gånger: ingen träff, och cache-control med no-cache eller private.
  3. Samma sak för kassan och Mitt konto.
  4. Lägg en produkt i varukorgen och ladda en produktsida: du ser din egen korg, ingen sparad version.

Sammanfattning

  • Sidor som är lika för alla ska ligga i cachen. Varukorg, kassa och Mitt konto aldrig.
  • WooCommerce sätter själv DONOTCACHEPAGE, no-cache-huvuden och cookies. Kontrollera att inget tar bort eller struntar i dem.
  • Se upp med omdöpta adresser, CDN-regler, tillägg som skriver över huvuden, sessioner för varje besökare och geolokalisering.
  • Redis, rensade schemalagda åtgärder, HPOS och en bra PHP-version hjälper där sidcachen inte kan.
  • Testa genom att ladda två gånger i ett privat fönster och läs huvudena.

Quiz

1. En kund ser produkter i sin varukorg som han inte har valt. Vad är den troligaste orsaken?



2. Vilket huvud förväntar du dig på kassasidan i en WooCommerce-butik?



3. Din butik visar inte priser per land, men standardplatsen är inställd på "Lokalisera". Vilken är en enkel förbättring för cachen?



4. Varför hjälper Redis mer i en butik än på en vanlig informationswebbplats?



Uppgift

Uppgift A6.4: Hålls varukorgen och kassan utanför cachen? Fyll i adressen till din butik och adresserna till din varukorg och kassasida (och eventuellt Mitt konto). Programmet hämtar startsidan två gånger med 2 sekunders mellanrum, utan cookies, och sedan varje butikssida också två gånger. Inget läggs i varukorgen och inget beställs. Grönt om startsidan andra gången kommer från cachen (eller är tydligt snabbare) utan att sätta en sessionscookie, och om varje butikssida andra gången inte har någon cacheträff och skickar en Cache-Control med no-cache, no-store, private eller max-age=0. Orange om startsidan inte använder någon cache, eller om en butikssida inte har någon träff men inte heller något no-cache-huvud. Rött vid en cacheträff på varukorg, kassa eller Mitt konto, eller om startsidan startar en WooCommerce-session för varje besökare.

En grön bock betyder att den här kontrollen stämmer just nu, inte att din butik är säker.

Uppgift A6.4: Hålls varukorgen och kassan utanför cachen?





Det du fyller i och det vi hittar sparar vi inte. Din webbläsare kommer ihåg dina svar och om du klarade uppgiften. Är du inloggad sparar vi bara att du klarade uppgiften (nästan) i Mina kurser; där kan du också ta bort det.

Läs mer

Steg i en panel gäller för WebOké. Hos andra leverantörer fungerar det på liknande sätt.

Ett ögonblick…

Ställ in dina domäner

Ställ in namnservrar, koppling till ditt webbhotell och vem som blir innehavare för varje domän.

Hämtar dina domäner…