ACSD-50858: rendimiento mejorado para cargar contenido de titulares

El parche ACSD-50858 corrige un problema de rendimiento del banner en la página de carrito/cierre de compra: consultas de BD excesivas y tiempo de carga de página aumentado. Esta revisión está disponible cuando está instalado Quality Patches Tool (QPT) 1.1.31. El ID del parche es ACSD-50858. Tenga en cuenta que el problema está programado para solucionarse en Adobe Commerce 2.4.7.

Productos y versiones afectados

El parche se ha creado para la versión de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) 2.4.5-p1

Compatible con versiones de Adobe Commerce:

  • Adobe Commerce (todos los métodos de implementación) 2.4.4 - 2.4.6
NOTE
El parche podría ser aplicable a otras versiones con las nuevas versiones de Quality Patches Tool. Para comprobar si el parche es compatible con su versión de Adobe Commerce, actualice el paquete magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches. Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.

Problema

El rendimiento del banner se ve afectado en la página del carro de compras/cierre de compra debido a consultas de BD excesivas y tiempo de carga de la página aumentado.

Esto se solucionó refactorizando la forma en que se cargan los contenidos de los banners, lo que redujo el número de consultas de DB en un 99,99 % y el tiempo de carga de la página en ~99 %.

Pasos a seguir:

  1. Inicie sesión en Admin y cree un producto sencillo.

  2. Cree un cliente, ya sea desde Administración o desde el front-end, y añada una dirección de envío para él.

  3. Mueva banners.php a la carpeta magento_root/pub/.

  4. Genere titulares utilizando el comando php pub/banners.php. Generará 10.000 banners simples y 1.000 banners con reglas de venta.

  5. Inicie sesión en el cliente creado anteriormente en el front-end.

  6. Añadir el producto creado anteriormente al carro de compras.

  7. Vaya a la página de cierre de compra (cierre de compra/carro).

  8. Supervisar el tiempo de carga de la solicitud banner/ajax/load:

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

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

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

Resultados esperados:

Disminución en el número de consultas de BD para magento_banner_content y el tiempo de carga de la página de carrito/cierre de compra.

Resultados reales:

Aumento en el número de consultas de BD para magento_banner_content y el tiempo de carga de la página del carro de compras/cierre de compra.

Aplicar el parche

Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:

Más información

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

Lectura relacionada

Para obtener más información sobre Quality Patches Tool, consulte:

Para obtener información sobre otros parches disponibles en QPT, consulte Quality Patches Tool: Buscar parches en la guía Quality Patches Tool.

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