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

ACSD-50858-korrigeringen åtgärdar ett bannerprestandaproblem på kundvagn-/utcheckningssidan: överflödiga databasfrågor och ökad sidinläsningstid. Den här korrigeringen är tillgänglig när Quality Patches Tool (QPT) 1.1.31 har installerats. 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 har skapats för Adobe Commerce-version:

  • Adobe Commerce (alla distributionsmetoder) 2.4.5-p1

Kompatibel med Adobe Commerce-versioner:

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

Problem

Banderollens prestanda påverkas på korgs-/utcheckningssidan på grund av för stora databasfrågor och ökad 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 mappen magento_root/pub/.

  4. Generera banners med kommandot php pub/banners.php. 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 inläsningstiden för banner/ajax/load-begäran:

    • 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 databasfrågor för magento_banner_content och tiden för inläsning av korgs-/utcheckningssida.

Faktiska resultat:

Öka antalet databasfrågor för magento_banner_content och tiden för inläsning av korgs-/utcheckningssida.

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 finns i:

Mer information om andra tillgängliga korrigeringsfiler i QPT finns i Quality Patches Tool: Söka efter korrigeringsfileri Quality Patches Tool-handboken.

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3