[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

ACSD-50858 : amélioration des performances pour le chargement du contenu des bannières

Le correctif ACSD-50858 corrige un problème de performances des bannières dans la page de panier/passage en caisse : requêtes de base de données excessives et temps de chargement de page accru. Ce correctif est disponible lorsque la version 1.1.31 de Quality Patches Tool (QPT) est installée. L’ID du correctif est ACSD-50858. Notez que le problème est planifié pour être corrigé dans Adobe Commerce 2.4.7.

Produits et versions concernés

Le correctif est créé pour la version Adobe Commerce :

  • Adobe Commerce (toutes les méthodes de déploiement) 2.4.5-p1

Compatible avec les versions d’Adobe Commerce :

  • Adobe Commerce (toutes les méthodes de déploiement) 2.4.4 - 2.4.6
NOTE
Le correctif peut s’appliquer à d’autres versions avec de nouvelles versions de Quality Patches Tool. Pour vérifier si le correctif est compatible avec votre version d’Adobe Commerce, mettez à jour le package magento/quality-patches vers la dernière version et vérifiez la compatibilité sur la page Quality Patches Tool : Rechercher des correctifs. Utilisez l’ID du correctif comme mot-clé de recherche pour localiser le correctif.

Problème

Les performances des bannières sont affectées dans la page de panier/passage en caisse en raison de requêtes de base de données excessives et d’un temps de chargement de page accru.

Ce problème a été corrigé en refactorisant la façon dont le contenu des bannières est chargé, ce qui a réduit le nombre de requêtes de base de données de 99,99 % et le temps de chargement des pages de ~99 %.

Procédure à suivre :

  1. Connectez-vous à Admin et créez un produit simple.

  2. Créez un client ou une cliente à partir de l’administration ou du serveur frontal et ajoutez une adresse de livraison pour ce client ou cette cliente.

  3. Déplacez banners.php vers le dossier magento_root/pub/.

  4. Générez des bannières à l’aide de la commande php pub/banners.php . Il génère 10 000 bannières simples et 1 000 bannières avec des règles de vente.

  5. Connectez-vous au client créé précédemment sur le serveur frontal.

  6. Ajoutez le produit créé précédemment au panier.

  7. Accédez à la page de passage en caisse (passage en caisse/panier).

  8. Surveillez le temps de chargement de la requête banner/ajax/load :

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

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

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

Résultats attendus :

Diminution du nombre de requêtes de base de données pour le temps de chargement des pages de magento_banner_content et de panier/passage en caisse.

Résultats réels :

Augmentation du nombre de requêtes de base de données pour le magento_banner_content et le temps de chargement de la page de panier/passage en caisse.

Application du correctif

Pour appliquer des correctifs individuels, utilisez les liens suivants en fonction de votre méthode de déploiement :

Informations supplémentaires

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

Lecture connexe

Pour en savoir plus sur Quality Patches Tool, consultez :

Pour plus d’informations sur les autres correctifs disponibles dans QPT, reportez-vous à Quality Patches Tool : Rechercher des correctifs dans le guide de Quality Patches Tool.

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