ACSD-50858: Förbättrade prestanda för inläsning av banners-innehåll

Korrigeringsfilen ACSD-50858 åtgärdar ett problem med bannerprestanda på kundvagns-/utcheckningssidan: överflödiga DB-frågor och längre sidinläsningstid. Den här korrigeringen är tillgänglig när Quality Patches Tool (QPT) 1.1.31 är installerat. Korrigerings-ID är ACSD-50858. Observera att problemet är planerat att åtgärdas i Adobe Commerce 2.4.7.

Berörda produkter och versioner

Korrigeringen skapas för Adobe Commerce-versionen:

  • Adobe Commerce (alla distributionsmetoder) 2.4.5-p1

Kompatibel med Adobe Commerce:

  • Adobe Commerce (alla distributionsmetoder) 2.4.4 - 2.4.6
NOTE
Patchen kan bli tillämplig på andra versioner med nya Quality Patches Tool releaser. Om du vill kontrollera om patchen är kompatibel med din Adobe Commerce-version uppdaterar du magento/quality-patches till den senaste versionen och kontrollera om Quality Patches Tool: Sök efter korrigeringssida. Använd patch-ID:t som söknyckelord för att hitta patchen.

Problem

Banderollens prestanda påverkas på korgs-/utcheckningssidan på grund av överflödiga DB-frågor och längre sidinläsningstid.

Detta korrigerades genom omfaktorisering av hur banners innehåll läses in, vilket minskade antalet DB-frågor med 99,99 % och sidinläsningstiden med cirka 99 %.

Steg som ska återskapas:

  1. Logga in på Admin och skapa en enkel produkt.

  2. Skapa en kund, antingen från Admin eller från frontend, och lägg till en leveransadress för den.

  3. Flytta banners.php till magento_root/pub/ mapp.

  4. Generera banners med php pub/banners.php -kommando. Det kommer att generera 10 000 enkla banners och 1 000 banners med försäljningsregler.

  5. Logga in på kunden som skapats tidigare i klientorganisationen.

  6. Lägg den produkt som skapats tidigare i kundvagnen.

  7. Gå till kassan (kassan/kundvagnen).

  8. Övervaka banner/ajax/load inläsningstid:

    • Utan bin/magento dev:query-log:enable

    • Med bin/magento dev:query-log:enable

      code language-none
      grep 'magento_banner_content' var/debug/db.log  | wc -l
      

Förväntade resultat:

Minska antalet DB-frågor för magento_banner_content och inläsningstid för kundvagn/utcheckning.

Faktiska resultat:

Öka antalet DB-frågor för magento_banner_content och inläsningstid för kundvagn/utcheckning.

Tillämpa korrigeringen

Använd följande länkar beroende på distributionsmetod för att tillämpa enskilda korrigeringsfiler:

Ytterligare information

banners.php content:

\Banner::class);
    $banner->setIsEnabled(
        \Magento\Banner\Model\Banner::STATUS_ENABLED
    )->setName(
        'Test Dynamic Block '.$i
    )->setTypes(
        ''
    )->setStoreContents(
        [0 => 'Dynamic Block Content '.$i]
    )->save();
}

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

/** @var \Magento\SalesRule\Model\Rule $salesRule */
$salesRule = $objectManager->create(\Magento\SalesRule\Model\Rule::class);
$salesRule->setData(
    [
        'name' => '50% Off ',
        'is_active' => 1,
        'customer_group_ids' => [\Magento\Customer\Model\GroupManagement::NOT_LOGGED_IN_ID],
        'coupon_type' => \Magento\SalesRule\Model\Rule::COUPON_TYPE_NO_COUPON,
        'conditions' => [
            [
                'type' => \Magento\SalesRule\Model\Rule\Condition\Address::class,
                'attribute' => 'base_subtotal',
                'operator' => '>',
                'value' => 0
            ]
        ],
        'simple_action' => 'by_percent',
        'discount_amount' => 50,
        'discount_step' => 0,
        'stop_rules_processing' => 1,
        'website_ids' => [
           1
        ]
    ]
);
$salesRule->save();

for ($i = 0; $i < 1000; $i++) {

    $banner = $objectManager->create(\Magento\Banner\Model\Banner::class);
    $banner->setData(
        [
            'name' => 'Get 50% Off ',
            'is_enabled' => \Magento\Banner\Model\Banner::STATUS_ENABLED,
            'types' => [], /*Any Banner Type*/
            'store_contents' => ['<img src="http://example.com/banner_40_percent_off.png" />'],
            'banner_sales_rules' => [$salesRule->getId()],
        ]
    );
    $banner->save();
}

Relaterad läsning

Mer information om Quality Patches Tool, se:

Mer information om andra patchar som finns i QPT finns i Quality Patches Tool: Sök efter patchar i Quality Patches Tool guide.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a