ACSD-50858: desempenho aprimorado para carregar o conteúdo dos banners

O patch ACSD-50858 corrige um problema de desempenho de banner na página de carrinho/check-out: excesso de consultas ao BD e maior tempo de carregamento da página. Este patch está disponível quando o Quality Patches Tool (QPT) 1.1.31 está instalado. A ID do patch é ACSD-50858. Observe que o problema está programado para ser corrigido no Adobe Commerce 2.4.7.

Produtos e versões afetados

O patch foi criado para a versão do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) 2.4.5-p1

Compatível com as versões do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) 2.4.4 - 2.4.6
NOTE
O patch pode se tornar aplicável a outras versões com as novas versões do Quality Patches Tool. Para verificar se o patch é compatível com a sua versão do Adobe Commerce, atualize o pacote magento/quality-patches para a versão mais recente e verifique a compatibilidade na Quality Patches Tool: página Procurar patches. Use a ID do patch como palavra-chave de pesquisa para localizar o patch.

Problema

O desempenho do banner é afetado na página do carrinho/check-out devido a excesso de consultas ao BD e tempo de carregamento da página aumentado.

Isso foi corrigido refatorando a maneira como o conteúdo dos banners é carregado, o que reduziu o número de consultas ao DB em 99,99% e o tempo de carregamento da página em ~99%.

Etapas a serem reproduzidas:

  1. Faça logon no Admin e crie um produto simples.

  2. Crie um cliente, seja do Administrador ou do front-end, e adicione um endereço de entrega para ele.

  3. Mova banners.php para a pasta magento_root/pub/.

  4. Gerar banners usando o comando php pub/banners.php. Ele gerará 10 mil banners simples e mil banners com regras de vendas.

  5. Faça logon no cliente criado anteriormente no front-end.

  6. Adicione o produto criado anteriormente ao carrinho.

  7. Vá para a página de check-out (check-out/carrinho).

  8. Monitorar o tempo de carregamento da solicitação banner/ajax/load:

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

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

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

Resultados esperados:

Diminuição no número de consultas ao BD para magento_banner_content e tempo de carregamento da página de carrinho/check-out.

Resultados reais:

Aumento no número de consultas ao BD para magento_banner_content e tempo de carregamento da página de carrinho/check-out.

Aplicar o patch

Para aplicar patches individuais, use os links a seguir, dependendo do método de implantação:

Informações adicionais

conteúdo de banners.php:

\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();
}

Leitura relacionada

Para saber mais sobre Quality Patches Tool, consulte:

Para obter informações sobre outros patches disponíveis no QPT, consulte Quality Patches Tool: Pesquisar patches no guia Quality Patches Tool.

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