Bästa praxis för utcheckning av prestanda

Processen Checka ut i Adobe Commerce är en viktig del av butiksupplevelsen. Den bygger på de inbyggda funktionerna cart och checkout .

Prestanda är avgörande när det gäller att upprätthålla en bra användarupplevelse. Granska sammanfattningen för prestandatestet om du vill veta mer om prestandaförväntningarna. Du kan optimera utcheckningsprestanda genom att konfigurera följande alternativ för bearbetning av order med hög genomströmning:

Konfigurationsalternativen AsyncOrder, Laterred Total Calculation och Inventory Check on Cart Load fungerar alla oberoende av varandra. Du kan använda alla tre funktionerna samtidigt eller aktivera och inaktivera funktionerna i valfri kombination.

NOTE
Använd inte anpassad PHP-kod för att anpassa de inbyggda funktionerna för kundvagn och utcheckning. Förutom potentiella prestandaproblem kan anpassad PHP-kod leda till komplexa uppgraderingar och underhållsproblem. De här problemen ökar din totala ägandekostnad. Om det inte går att undvika anpassningar av varukorgar och kassor använder du bara tillägg som godkänts av Adobe Commerce Marketplace. Alla tillägg på marknadsplatsen genomgår omfattande granskning för att verifiera att de uppfyller Adobe Commerce kodningsstandarder och bästa praxis.

Asynkron orderplacering

Modulen Asynkron ordning aktiverar asynkron placering av ordningen som received, placerar ordern i en kö och bearbetar order från kön första-i-första-ut-basis. AsyncOrder är inaktiverad som standard.

En kund lägger till exempel till en produkt i kundvagnen och väljer Proceed to Checkout. De fyller i formuläret Shipping Address, väljer önskad Shipping Method, väljer en betalningsmetod och gör en beställning. Kundvagnen har rensats, ordern har markerats som Received, men produktkvantiteten har inte justerats ännu och inte heller skickas ett e-postmeddelande till kunden. Ordern tas emot, men orderinformationen är inte tillgänglig än eftersom ordern inte har bearbetats fullständigt. Den ligger kvar i kön tills konsumenten placeOrderProcess börjar, verifierar ordern med funktionen lagerkontroll (aktiverad som standard) och uppdaterar ordningen enligt följande:

  • Produkten är tillgänglig - orderstatusen ändras till Väntande, produktkvantiteten justeras, ett e-postmeddelande med orderinformation skickas till kunden och den slutförda orderinformationen blir tillgänglig för visning i listan Beställningar och Returer med åtgärdbara alternativ, till exempel ändra ordning.
  • Produkten är inte i lager eller har låg leverans - orderstatusen ändras till Avvisad, produktkvantiteten justeras inte, ett e-postmeddelande med orderinformation om utgåvan skickas till kunden och den avvisade orderinformationen blir tillgänglig i listan Beställningar och Returer utan några åtgärdbara alternativ.

Använd kommandoradsgränssnittet för att aktivera de här funktionerna eller redigera filen app/etc/env.php enligt motsvarande README-filer som definieras i Modulreferenshandboken.

Så här aktiverar du AsyncOrder:

Du kan aktivera AsyncOrder med kommandoradsgränssnittet:

bin/magento setup:config:set --checkout-async 1

Kommandot set skriver följande till filen app/etc/env.php:

...
   'checkout' => [
       'async' => 1
   ]

Se AsyncOrder i Modulens referenshandbok.

Så här inaktiverar du AsyncOrder:

WARNING
Innan du inaktiverar AsyncOrder-modulen måste du verifiera att alla asynkrona orderprocesser är slutförda.

Du kan inaktivera AsyncOrder med kommandoradsgränssnittet:

bin/magento setup:config:set --checkout-async 0

Kommandot set skriver följande till filen app/etc/env.php:

...
   'checkout' => [
       'async' => 0
   ]

AsyncOrder-kompatibilitet

AsyncOrder stöder en begränsad uppsättning Adobe Commerce-funktioner.

Kategori
Funktion som stöds
Utcheckningstyper
OnePage-utcheckning
Standardutcheckning
Förhandlingsbar B2B-offert
Betalningsmetoder
Check/Money Order
Cash on Delivery
Braintree
PayPal PayFlow Pro
Leveransmetoder
Alla leveransmetoder stöds.

Följande funktioner stöds inte av AsyncOrder, men fortsätter att fungera synkront:

  • Betalningsmetoder som inte ingår i listan över funktioner som stöds
  • Checka ut flera adresser
  • Skapa administratörsorder

Stöd för webb-API

När modulen AsyncOrder är aktiverad körs följande REST-slutpunkter och GraphQL-mutationer asynkront:

REST:

GraphQL:

INFO
GraphQL har inte stöd för att placera överlåtbara offertorder asynkront.

Utesluta betalningsmetoder

Utvecklare kan uttryckligen exkludera vissa betalningsmetoder från asynkron orderplacering genom att lägga till dem i Magento\AsyncOrder\Model\OrderManagement::paymentMethods-arrayen. Order som använder uteslutna betalningsmetoder behandlas synkront.

Asynk order för överlåtbar offert

Med B2B-modulen Förhandlingsbar offertasynkron ordning kan du spara orderobjekt asynkront för funktionen NegotiableQuote. AsyncOrder och NegotiableQuote måste vara aktiverade.

Uppskjuten total beräkning

Modulen Uppskjuten total beräkning optimerar utcheckningsprocessen genom att skjuta upp den totala beräkningen tills den begärs för kundvagnen eller under de sista utcheckningsstegen. När det här alternativet är aktiverat beräknas endast delsumman när kunden lägger till produkter i kundvagnen.

Uppskjuten total beräkning är inaktiverad som standard. Använd kommandoradsgränssnittet för att aktivera de här funktionerna eller redigera filen app/etc/env.php enligt motsvarande README-filer som definieras i Modulreferenshandboken.

Så här aktiverar du DeferredTotalCalculation:

Du kan aktivera DeferredTotalCalculation med kommandoradsgränssnittet:

bin/magento setup:config:set --deferred-total-calculating 1

Kommandot set skriver följande till filen app/etc/env.php:

...
   'checkout' => [
       'deferred_total_calculating' => 1
   ]

Så här inaktiverar du DeferredTotalCalculation:

Du kan inaktivera DeferredTotalCalculation med kommandoradsgränssnittet:

bin/magento setup:config:set --deferred-total-calculating 0

Kommandot set skriver följande till filen app/etc/env.php:

...
   'checkout' => [
       'deferred_total_calculating' => 0
   ]

Se DeferredTotalCalculating i referenshandboken för modulen.

Fast produktskatt

När Uppskjuten total beräkning är aktiverad inkluderas inte FPT (Fixed Product Tax) i produktpriset och kundvagnens delsumma efter att produkten lagts till i kundvagnen. FPT-beräkningen skjuts upp när en produkt läggs till i minivagnen. FPT visas korrekt i kundvagnen när du har gått till den slutliga utcheckningen.

Inaktivera lagerkontroll

Den globala inställningen Aktivera lager vid kundvagnsbeläggning avgör om en inventeringskontroll ska utföras när en produkt läses in i kundvagnen. Om du inaktiverar lagerkontrollprocessen förbättras prestanda för alla utcheckningssteg, särskilt när du hanterar bulkprodukter i vagnen.

När alternativet är inaktiverat görs ingen lagerkontroll när en produkt läggs till i kundvagnen. Om inventeringskontrollen hoppas över kan vissa scenarier utanför lagret ge upphov till andra typer av fel. En lagerkontroll alltid utförs vid orderplaceringssteget, även när den är inaktiverad.

Aktivera inläsning av kundvagn för lagerkontroll är aktiverat (inställt på Ja) som standard. Om du vill inaktivera lagerkontrollen när vagnen läses in anger du Enable Inventory Check On Cart Load till No i administratörsgränssnittet Lagrar > Konfiguration > Katalog > Lager > Stock-alternativ . Se Konfigurera globala alternativ och Kataloginventering i användarhandboken.

Belastningsutjämning

Du kan hjälpa till att balansera inläsningen mellan olika noder genom att aktivera sekundära anslutningar för MySQL-databasen och Redis-instansen.

Adobe Commerce kan läsa flera databaser eller Redis-instanser asynkront. Om du använder Commerce i en molninfrastruktur kan du konfigurera de sekundära anslutningarna genom att redigera värdena MYSQL_USE_SLAVE_CONNECTION och REDIS_USE_SLAVE_CONNECTION i filen .magento.env.yaml . Endast en nod behöver hantera läs- och skrivtrafik, så om variablerna anges till true skapas en sekundär anslutning för skrivskyddad trafik. Ange värdena till false om du vill ta bort en befintlig skrivskyddad anslutningsmatris från filen env.php.

Exempel på filen .magento.env.yaml:

stage:
  deploy:
    MYSQL_USE_SLAVE_CONNECTION: true
    REDIS_USE_SLAVE_CONNECTION: true
recommendation-more-help
c0c5bbed-4957-4162-81bc-120c837a1894