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

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脚本,预热所有类别和最受欢迎的页面:

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;
}

您可以从Google Analytics导出热门页面列表。

3. 将JavaScript代码移至页面底部

将JavaScript代码移至页面底部可以改善首屏内容绘制速度。 Magento 2.4 提供了相应的管理设置,或者使用命令行:

php bin/magento config:set  dev/js/move_script_to_bottom 1
php bin/magento cache:flush

4. 将图片转换为WebP格式

WebP图片比JPEG和PNG占用更少的磁盘空间。将网站图片转换为WebP格式可以减小页面大小,提升性能。可以使用cwebp命令行工具进行转换:

cwebp -q 80 image.png image.webp

-q参数设置质量,此处为80)。 Magento 2也有一些模块可以实现此转换。

5. 启用HTML压缩

HTML压缩有助于减小页面大小和提升速度。 Magento 2.4 无需额外模块即可压缩HTML。启用方式:

php bin/magento config:set dev/template/minify_html 1
php bin/magento deploy:mode:set production

6. 压缩和合并JavaScript和CSS文件

压缩和合并JS和CSS文件有助于减小页面大小,减少HTTP请求,从而加快网站速度。启用方式:

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

7. 缓存ElasticSearch查询结果

Magento 2.4 使用ElasticSearch引擎进行索引和目录管理。对于大型目录,缓存查询结果可以提高ElasticSearch性能。打开vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php文件,在约365行附近添加以下代码:

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;
}

这将启用ElasticSearch内部查询缓存机制。

总结

本文介绍了七种提升Magento 2网站速度的方法:使用Varnish作为全页缓存、设置缓存预热工具、延迟加载JavaScript、将所有图片转换为WebP、启用HTML压缩、压缩和合并JS和CSS文件以及缓存ElasticSearch查询结果。这些步骤将改善服务器响应时间和核心网络指标。

以上是更快地制作Magento 2网站的7种简单方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
21个开发人员新闻通讯将在2025年订阅21个开发人员新闻通讯将在2025年订阅Apr 24, 2025 am 08:28 AM

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

使用AWS ECS和LAMBDA的无服务器图像处理管道使用AWS ECS和LAMBDA的无服务器图像处理管道Apr 18, 2025 am 08:28 AM

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

CNCF ARM64飞行员:影响和见解CNCF ARM64飞行员:影响和见解Apr 15, 2025 am 08:27 AM

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器