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

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

Feb 08, 2025 am 10:49 AM

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

热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

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1242
24
CNCF ARM64飞行员:影响和见解 CNCF ARM64飞行员:影响和见解 Apr 15, 2025 am 08:27 AM

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

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

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

21个开发人员新闻通讯将在2025年订阅 21个开发人员新闻通讯将在2025年订阅 Apr 24, 2025 am 08:28 AM

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

See all articles