首頁 >科技週邊 >IT業界 >更快地製作Magento 2網站的7種簡單方法

更快地製作Magento 2網站的7種簡單方法

Joseph Gordon-Levitt
Joseph Gordon-Levitt原創
2025-02-08 10:49:08993瀏覽

7 Easy Ways to Make a Magento 2 Website Faster

Magento 2電商平台因其速度問題而飽受詬病,緩慢的商品目錄頁面和反應遲鈍的結賬流程是常見問題。本文將分享七個實用技巧,助您提升Magento 2在線商店的運行速度。

1. 使用Varnish作為緩存應用

Varnish是一款HTTP代理服務器,可緩存內容,安裝在Web服務器前面可顯著提升網站性能。 Magento 2內置支持Varnish。啟用方式如下:

  1. 進入管理面板 > 商店 > 配置 > 高級 > 系統 > 全頁緩存,並將“緩存應用程序”設置為Varnish Cache。

    7 Easy Ways to Make a Magento 2 Website Faster

  2. 展開Varnish配置選項卡,導出VCL文件。

    7 Easy Ways to Make a Magento 2 Website Faster

將此文件交給您的系統管理員或主機支持團隊進行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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn