Magento 2電商平台因其速度問題而飽受詬病,緩慢的商品目錄頁面和反應遲鈍的結賬流程是常見問題。本文將分享七個實用技巧,助您提升Magento 2在線商店的運行速度。
1. 使用Varnish作為緩存應用
Varnish是一款HTTP代理服務器,可緩存內容,安裝在Web服務器前面可顯著提升網站性能。 Magento 2內置支持Varnish。啟用方式如下:
進入管理面板 > 商店 > 配置 > 高級 > 系統 > 全頁緩存,並將“緩存應用程序”設置為Varnish Cache。
展開Varnish配置選項卡,導出VCL文件。
將此文件交給您的系統管理員或主機支持團隊進行Varnish守護進程配置。
2. 安裝緩存預熱工具
Magento 2使用全頁緩存(FPC)來降低服務器響應時間,但FPC的首次請求通常較慢。緩存預熱工具(腳本或擴展)可以預先發出這些請求,填充緩存存儲,從而縮短首字節時間(TTFB)。您可以安裝Magento 2模塊(付費或免費)作為緩存預熱工具,或者創建簡單的PHP腳本,預熱所有類別和最受歡迎的頁面:
<code class="language-php">ini_set('memory_limit','12000M'); use Magento\Framework\App\Bootstrap; require __DIR__.'/app/bootstrap.php'; $params = $_SERVER; $bootstrap = Bootstrap::create(BP,$params); $obj = $bootstrap->getObjectManager(); $state = $obj->get('Magento\Framework\App\State'); $state->setAreaCode('frontend'); $categories = $obj->create('Magento\Catalog\Model\ResourceModel\Category\Collection'); $categories->addIsActiveFilter() ->joinUrlRewrite(); foreach($categories as $cat){ $st = microtime(true); $dd = file_get_contents_ssl($cat->getUrl()); $fn = microtime(true); if(($fn - $st) > 0.9) echo $cat->getUrl()." : time: ".($fn - $st)."\n"; sleep(3); } $open = fopen("1000-popular-pages.csv","r"); while(($data = fgetcsv($open,4000,",")) !== FALSE){ if(filter_var($data[0],FILTER_VALIDATE_URL) !== FALSE && strpos($data[0],".pdf") === FALSE && strpos($data[0],"/blog/") === FALSE){ $st = microtime(true); $dd = file_get_contents_ssl($data[0]); $fn = microtime(true); if(($fn - $st) > 0.9) echo $data[0]." : time: ".($fn - $st)."\n"; sleep(3); } } fclose($open); function file_get_contents_ssl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000); curl_setopt($ch, CURLOPT_TIMEOUT, 10000); $result = curl_exec($ch); if($result === FALSE) $result = curl_error($ch); curl_close($ch); return $result; }</code>
您可以從Google Analytics導出熱門頁面列表。
3. 將JavaScript代碼移至頁面底部
將JavaScript代碼移至頁面底部可以改善首屏內容繪製速度。 Magento 2.4 提供了相應的管理設置,或者使用命令行:
<code class="language-bash">php bin/magento config:set dev/js/move_script_to_bottom 1 php bin/magento cache:flush</code>
4. 將圖片轉換為WebP格式
WebP圖片比JPEG和PNG佔用更少的磁盤空間。將網站圖片轉換為WebP格式可以減小頁面大小,提升性能。可以使用cwebp
命令行工具進行轉換:
<code class="language-bash">cwebp -q 80 image.png image.webp</code>
(-q
參數設置質量,此處為80)。 Magento 2也有一些模塊可以實現此轉換。
5. 啟用HTML壓縮
HTML壓縮有助於減小頁面大小和提升速度。 Magento 2.4 無需額外模塊即可壓縮HTML。啟用方式:
<code class="language-bash">php bin/magento config:set dev/template/minify_html 1 php bin/magento deploy:mode:set production</code>
6. 壓縮和合併JavaScript和CSS文件
壓縮和合併JS和CSS文件有助於減小頁面大小,減少HTTP請求,從而加快網站速度。啟用方式:
<code class="language-bash">php bin/magento config:set dev/js/merge_files 1 php bin/magento config:set dev/css/merge_css_files 1 php bin/magento config:set dev/js/minify_files 1 php bin/magento config:set dev/css/minify_files 1 php bin/magento deploy:mode:set production</code>
7. 緩存ElasticSearch查詢結果
Magento 2.4 使用ElasticSearch引擎進行索引和目錄管理。對於大型目錄,緩存查詢結果可以提高ElasticSearch性能。打開vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
文件,在約365行附近添加以下代碼:
<code class="language-php">ini_set('memory_limit','12000M'); use Magento\Framework\App\Bootstrap; require __DIR__.'/app/bootstrap.php'; $params = $_SERVER; $bootstrap = Bootstrap::create(BP,$params); $obj = $bootstrap->getObjectManager(); $state = $obj->get('Magento\Framework\App\State'); $state->setAreaCode('frontend'); $categories = $obj->create('Magento\Catalog\Model\ResourceModel\Category\Collection'); $categories->addIsActiveFilter() ->joinUrlRewrite(); foreach($categories as $cat){ $st = microtime(true); $dd = file_get_contents_ssl($cat->getUrl()); $fn = microtime(true); if(($fn - $st) > 0.9) echo $cat->getUrl()." : time: ".($fn - $st)."\n"; sleep(3); } $open = fopen("1000-popular-pages.csv","r"); while(($data = fgetcsv($open,4000,",")) !== FALSE){ if(filter_var($data[0],FILTER_VALIDATE_URL) !== FALSE && strpos($data[0],".pdf") === FALSE && strpos($data[0],"/blog/") === FALSE){ $st = microtime(true); $dd = file_get_contents_ssl($data[0]); $fn = microtime(true); if(($fn - $st) > 0.9) echo $data[0]." : time: ".($fn - $st)."\n"; sleep(3); } } fclose($open); function file_get_contents_ssl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000); curl_setopt($ch, CURLOPT_TIMEOUT, 10000); $result = curl_exec($ch); if($result === FALSE) $result = curl_error($ch); curl_close($ch); return $result; }</code>
這將啟用ElasticSearch內部查詢緩存機制。
總結
本文介紹了七種提升Magento 2網站速度的方法:使用Varnish作為全頁緩存、設置緩存預熱工具、延遲加載JavaScript、將所有圖片轉換為WebP、啟用HTML壓縮、壓縮和合併JS和CSS文件以及緩存ElasticSearch查詢結果。這些步驟將改善服務器響應時間和核心網絡指標。
以上是更快地製作Magento 2網站的7種簡單方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!