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
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 :
-
Connectez-vous à Admin et créez un produit simple.
-
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.
-
Déplacez banners.php vers le dossier
magento_root/pub/. -
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. -
Connectez-vous au client créé précédemment sur le serveur frontal.
-
Ajoutez le produit créé précédemment au panier.
-
Accédez à la page de passage en caisse (passage en caisse/panier).
-
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:enablecode 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 :
- Adobe Commerce ou Magento Open Source On-premise : Quality Patches Tool > Utilisation dans le guide de Quality Patches Tool.
- Adobe Commerce sur les infrastructures cloud : Mises à niveau et correctifs > Appliquer des correctifs dans le guide Commerce sur les infrastructures cloud .
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 :
- Quality Patches Tool sortie : un nouvel outil permettant de mettre en libre-service des correctifs de qualité dans la base de connaissances du support.
- Vérifiez si un correctif est disponible pour votre problème Adobe Commerce en utilisant Quality Patches Tool dans le guide de Quality Patches Tool.
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.