[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}
ACSD-50858:改善載入橫幅內容的效能
ACSD-50858修補程式修正了購物車/結帳頁面中的橫幅效能問題: 過多的DB查詢以及頁面載入時間增加。 安裝Quality Patches Tool (QPT) 1.1.31時,即可使用此修補程式。 修補程式ID為ACSD-50858。 請注意,此問題已排程在Adobe Commerce 2.4.7中修正。
受影響的產品和版本
已為Adobe Commerce版本建立修補程式:
- Adobe Commerce (所有部署方法) 2.4.5-p1
與Adobe Commerce版本相容:
- Adobe Commerce (所有部署方法) 2.4.4 - 2.4.6
magento/quality-patches套件更新至最新版本,並在Quality Patches Tool上檢查相容性:搜尋修補程式頁面。 使用修補程式ID作為搜尋關鍵字,以尋找修補程式。問題
由於 過多的DB查詢及頁面載入時間增加,購物車/結帳頁面中的橫幅效能受到影響。
已透過重構橫幅內容的載入方式來解決此問題,這將DB查詢的數量減少了99.99%,頁面載入時間減少了約99%。
要再現的步驟:
-
登入Admin並建立簡單的產品。
-
從管理員或前端建立客戶,並新增送貨地址。
-
將banners.php移至
magento_root/pub/資料夾。 -
使用
php pub/banners.php命令產生橫幅。 它將產生10,000個簡單橫幅和1,000個橫幅搭配銷售規則。 -
登入先前在前端建立的客戶。
-
將先前建立的產品新增至購物車。
-
前往結帳頁面(結帳/購物車)。
-
監視
banner/ajax/load要求載入時間:-
不含
bin/magento dev:query-log:enable -
與
bin/magento dev:query-log:enablecode language-none grep 'magento_banner_content' var/debug/db.log | wc -l
-
預期結果:
減少magento_banner_content的DB查詢數以及購物車/結帳頁面的載入時間。
實際結果:
增加magento_banner_content的DB查詢數目以及購物車/結帳頁面載入時間。
套用修補程式
若要套用個別修補程式,請根據您的部署方法使用下列連結:
- Adobe Commerce或Magento Open Source內部部署: Quality Patches Tool 指南中的>使用狀況Quality Patches Tool。
- 雲端基礎結構上的Adobe Commerce:雲端基礎結構上的Commerce指南中的升級和修補程式>套用修補程式。
其他資訊
橫幅.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();
}
相關閱讀
若要進一步瞭解Quality Patches Tool,請參閱:
- Quality Patches Tool 已發行:支援知識庫中的自助式品質修補程式的新工具。
- 使用 Quality Patches Tool指南中的Quality Patches Tool,檢查您的Adobe Commerce問題是否有修補程式可用。
如需QPT中其他修補程式的詳細資訊,請參閱Quality Patches Tool指南中的:搜尋修補程式Quality Patches Tool。