首页 >科技周边 >IT业界 >更快地制作Magento 2网站的7种简单方法

更快地制作Magento 2网站的7种简单方法

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-08 10:49:08992浏览

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