Checkout er den side i en WooCommerce-webshop, hvor kunden er tættest på at købe, og den sværeste at gøre hurtig. Den kan ikke caches, og hver gang kunden ændrer adresse, fragt eller betaling, regner WooCommerce kurven igennem forfra. Når kunden trykker “Bestil”, skal ordren oprettes, betalingen godkendes, lageret trækkes og mails sendes, før kunden ser bekræftelsen.
Her gennemgår vi, hvordan du finder ud af, hvilket af de trin der er langsomt, og hvad du kan gøre ved det. Er hele shoppen langsom, så start med vores guide til fejlfinding af en langsom WooCommerce-webshop.
Hvor i checkout er det langsomt?
“Checkout er langsom” kan betyde flere forskellige ting. Gå selv købet igennem, og notér, hvor du venter.
| Du venter | Typisk årsag |
|---|---|
| Når checkout-siden indlæses | Serveren, manglende object cache, tunge plugins eller scripts på siden |
| Når du skriver adresse eller vælger fragt | Fragt og moms, der beregnes forfra, ofte med kald til et fragtfirmas API |
| Efter du trykker “Bestil” | Betalingsløsningen, mails, der sendes med det samme, eller integrationer, der kører midt i ordren |
| Siden bliver ved med at loade | En JavaScript-fejl, et plugin i konflikt eller en checkout, der ved en fejl bliver cachet |
Find den langsomme forespørgsel
Det meste af det, der sker i checkout, sker i forespørgsler, efter siden er indlæst. Dem ser du i browserens udviklerværktøjer (F12) under Network. Gå købet igennem med fanen åben, og sortér efter tid.
I den klassiske checkout hedder de vigtigste ?wc-ajax=update_order_review, som kører, hver gang adresse, fragt eller betaling ændres, og ?wc-ajax=checkout, som kører, når kunden trykker “Bestil”. Bruger shoppen den nyere checkout-blok, går trafikken i stedet til WooCommerce’ Store API under /wp-json/wc/store/v1/, fx cart og checkout. Den forespørgsel, der tager længst tid, er der, du skal lede.
Er det update_order_review eller kurven i Store API, så se på fragt, moms og plugins, der hænger noget på beregningen. Er det selve checkout, så se på betaling, mails og integrationer. Query Monitor kan vise, hvilke plugins og eksterne kald der bruger tiden i den enkelte forespørgsel. Brug det helst på en kopi af shoppen.
Fragt og moms beregnes ved hver ændring
Hver gang kunden ændrer postnummer, land eller fragtmetode, beregner WooCommerce fragt, moms og totaler forfra. Med faste fragtpriser går det hurtigt. Henter et fragtplugin priser eller pakkeshops fra fragtfirmaets eller en fragtplatforms API, venter checkout på svaret hver gang. Er API’et langsomt eller nede, mærker kunden det direkte.
Tjek i fragtpluginets indstillinger, om det gemmer svar et stykke tid, så den samme adresse ikke slås op igen ved hver ændring, og om det har en timeout, så checkout ikke hænger, når API’et ikke svarer. Har du flere fragtplugins, der kun bruges til en enkelt metode, kan det være værd at samle dem. Det samme gælder plugins, der beregner moms eller gebyrer ud fra kurven: de kører ved hver opdatering.
Når kunden trykker “Bestil”
I det øjeblik kunden trykker “Bestil”, gør WooCommerce en række ting i samme forespørgsel: opretter ordren, trækker lageret, kalder betalingsløsningen og sender ordremails. Plugins kan hægte deres eget arbejde på de samme trin, fx at sende ordren videre til et lager-, regnskabs- eller CRM-system. Kunden venter på det hele.
- Betaling: Kaldet til betalingsløsningen er nødvendigt, men det skal kun være ét. Er det langsomt, så tjek, at pluginet er opdateret, og spørg udbyderen, om der er kendte problemer.
- Mails: Sendes ordremails gennem serverens egen mailfunktion eller en langsom mailserver, kan det forsinke bekræftelsen. Send dem gennem en rigtig mailtjeneste.
- Integrationer: Synkronisering med regnskab, lager eller fragt bør ske i baggrunden, efter ordren er gennemført, ikke mens kunden venter. Mange plugins kan sættes til det. Kan dit ikke, er det værd at tage op med udvikleren af det.
Det arbejde, der lægges i baggrunden, havner i WooCommerce’ kø af planlagte handlinger. Hvorfor den kø skal køre fra serveren og ikke på kundernes sidevisninger, står i afsnittet om baggrundsjob i fejlfindingsguiden, og hvordan du holder selve køen ren, i guiden om Action Scheduler.
Plugins og scripts på checkout-siden
Checkout samler ofte mange plugins: ekstra felter, mersalg, gavekort, kundeklub, chat, sporing og pop-ups. Hvert af dem kan lægge arbejde på serveren og scripts i browseren. Se i Network-fanen, hvilke scripts der indlæses på checkout, og spørg om hver: skal det være her for, at kunden kan betale? Chat, pop-ups og sliders kan ofte slås fra på checkout, selv om de bliver på resten af shoppen.
Står ét plugin for meget af tiden, så prøv shoppen uden det på en kopi. Det er den hurtigste måde at få et sikkert svar.
Cache og server
Kurv og checkout må ikke ligge i en sidecache, fordi indholdet er forskelligt for hver kunde. Hver visning bygges derfor fra bunden af PHP og databasen. Det, der hjælper her, er et object cache som Redis, der gemmer resultatet af databaseforespørgsler mellem visningerne, og en server med nok PHP-processer til, at kunderne ikke står i kø. Hvordan de lag hænger sammen, forklarer vi i sådan fungerer WordPress: arkitektur og performance.
Er checkout kun langsom, når der er mange kunder på én gang, er det ofte serveren, der løber tør. Så hjælper det ikke at fjerne felter. Det er det samme problem, der rammer på Black Friday, og forberedelsen står i vores Black Friday-tjekliste.
Hvis checkout bliver ved med at loade
En checkout, der aldrig bliver færdig, er sjældent langsom. Den er gået i stå. WooCommerce’ egen vejledning om checkout, der bliver ved med at loade (på engelsk) peger på de typiske årsager: en JavaScript-fejl fra et plugin eller temaet, et plugin i konflikt, eller en cache, der serverer en gammel udgave af checkout. Se efter røde fejl i browserens konsol (F12), og tjek, at checkout, kurv og “Min konto” er undtaget fra sidecachen.
Ofte stillede spørgsmål
Hjælper det at skifte til et andet checkout-plugin?
Kun hvis det er selve checkout-siden, der er problemet. Ligger tiden i fragtberegning, betaling eller integrationer, følger den med over i det nye plugin. Find den langsomme forespørgsel først.
Bliver checkout hurtigere af færre felter?
Færre felter gør det hurtigere for kunden at udfylde, men serveren bliver sjældent hurtigere af det. Er det svartiden, der er problemet, ligger årsagen i et af de trin ovenfor.
Vil du have hjælp?
En langsom checkout rammer kunder, der allerede har besluttet sig. Vil du have, at vi finder årsagen, så læs om optimering af en langsom WooCommerce-shop. Vi kigger gratis på din shop først og siger, hvad der skal til.