为什么Magento 2速度极慢?


30

我使用了Magento 1.9,还可以。它没有简单的joomla网站那么快,但是我有很多客户,没有问题。

现在我想将网站升级到Magento 2,我购买了一个新主机(与我目前拥有的主机相同)并安装了没有示例数据且使用起来很麻烦的Magento 2.不仅管理员,而且空主页也需要几分钟加载,当我尝试创建一个帐户时,出现“达到资源限制”的错误

我尝试使用Facebook FlashCache,OptimumCache和Cloudflare,但是即使创建者说Magento 2比第一个版本快得多,也没有任何改变。

我想了解为什么他们这么多年后无法修复,以及为什么有这么多人使用它?

有什么办法可以固定它吗?

更新:

我之前使用过mgt-commerce,它的运行速度非常快,加载时间不到2秒,但价格却太高:AWS价格+€199.00

他们默认提供php7 / HHVM,Varnish,Redis,CDN,NGINX,我想这就是为什么它这么快。

我必须购买Amazon WS帐户,但我不知道为什么我的网站实际上由Amazon托管。

我正在寻找价格更低的相同速度。VPS提供程序示例。

我环顾四周,但发现每个托管服务提供商都声称他们拥有Magento托管。Siteground,Mochahost,Hostgator,Fastcomet等。

也许有一个托管服务提供商会安装这些缓存来击败竞争对手。

PS:对不起,如果我的帖子对程序员来说似乎很愚蠢,可惜我在大学选择了经济学,商业和市场营销:(


您能否解释一下您对Facebook FlashCache,OptimumCache和Cloudflare进行了哪些尝试?
mbalparda

1
看起来像是环境问题。在我的vm上,打开的cms /主页没有FPC <0.1s且FPC <0.01s
KAndy 2016年

禁用的CSS / JS合并商店>配置- >高级>开发者看到我的评论在这里magento.stackexchange.com/questions/150073/...
康斯坦丁·格拉西莫夫

2
我从M2开始,对它的性能也很沮丧。如果您的软件需要为单个用户运行一千个缓存,则有问题。我希望我很快改变主意。
里卡多·马丁斯 Ricardo Martins)

@KAndy你能写你用什么虚拟机吗?如果您使用无业游民,是否可以共享配置脚本?我尝试了几台VM,但是所有VM均无法正常工作。Magento安装成功,但是页面无法加载。
艾伦(Alan)

Answers:


23

有多种资源可用来改善Magento 2的性能,并且所有这些文档都有很好的记录。

模式:Magento 2引入了模式,它是最慢的默认模式。尝试开发人员模式,并始终以生产模式运行实时商店。更多信息在这里

缓存:开箱即用地支持Varnish,非常易于配置和使用。

Redis:Redis是一个可选的后端缓存解决方案,用于替换Zend_Cache_Backend_File,默认情况下在Magento 2中使用。它可以用于会话存储和页面缓存。

Memcache:Memcached是一个内存键值存储,用于存储来自数据库调用,API调用或页面呈现结果的任意小块任意数据(字符串,对象)。在Magento 2中,它可以用于会话

PHP 7:Magento 2与PHP 7兼容。关于PHP 7如何永久影响性能的研究很多。

这仅仅是开始,您应该能够微调Web服务器和数据库服务器,但是这在很大程度上取决于您的特定用例。

如果您自己不知道该怎么做,那么有很多专门从事Magento托管的公司。

对于一个相当稳定的开发环境,我个人推荐使用Paliarush的Vagrant或我从Magento获得的VM作为课程。即将发布正式的docker镜像。


8

Magento即使在开发人员模式下也可以正常运行。它确实需要一些初始配置。

首先,假设您在Ubuntu上,确保Magento设置正确。

使用最新版本,因为Magento 2.2+支持php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

如果您运行多个php版本,则通过以下方式将7.1设置为默认值

sudo update-alternatives --set php /usr/bin/php7.1

在Magento上

  1. 如果尚未设置,请设置为Developer php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. 检查Magento的缓存已启用

    php -f bin/magento cache:status

如果未启用(1系列)

php -f bin/magento cache:enable

启用JS / CSS捆绑

商店>配置>高级>开发人员

*请注意,以上菜单项仅在开发人员模式下显示

模板设置

  • 缩小HTML =是

Javascript设置

  • 合并JS文件=是

  • 启用JS捆绑=是

  • 缩小JS文件=是

CSS设置

  • 合并CSS =是
  • 缩小CSS =是

在每一步刷新高速缓存之后,从此处开始进行高速缓存刷新,这是您尝试缩短加载时间的基准。

php -f bin/magento cache:flush

高级捆绑

这本身就是一篇遵循magento devdocs指南的文章,说明如何启用此功能,这可能会进一步增加前端JS的加载速度,使其达到3倍的速度。

使用Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

编辑/www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

使用PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

在PHP中启用opcache

编辑/etc/php/7.1/apache2/php.ini查找opcache.enable

opcache.enable=1

我还建议使用Cloud DB(例如AWS RDS或其他数据库),这将使您免去配置mysql的麻烦。

如果现在启用生产模式 php -f bin/magento deploy:mode:set production

您应该发现它运行得相当不错。

从这里开始,您可以添加Varnish,切换到Nginx,为静态文件添加CDN。


2

我在配备MAMP的Macbook Pro(2016年末)上也遇到了这个问题。

我想要做的是创建一个Magento 2主题。我停用了所有缓存,大约30秒钟就重新加载了一个页面(前端和后端)。

我使用“ php magento cache:enable”命令激活了所有缓存,站点加载非常快。我仍然可以使用Grunt和LESS,而无需停用任何缓存类型。


1

Magento 2默认情况下并不慢。您必须按照以下步骤使其快速:

  1. 服务器和系统要求

  2. 更新Magento版本

  3. 启用清漆缓存

  4. 配置Memcached

  5. 启用平面类别和产品

  6. 优化Javascript和CSS

  7. 内容传递网络

  8. 使用轻量级主题

  9. 无错误的扩展

  10. 图像应完全优化


22
很抱歉,但是如果您必须向应用程序添加多个级别的缓存,那么默认情况下它速度慢。
罗伯特·艾金顿

Robert:Dude,将高速缓存添加到多层系统的几层是正确的体系结构。我们不是在
逐个

在开发过程中使用缓存并不是真正的最佳解决方案。每次进行更改时清除缓存更像是使用编译语言而不是PHP开发。
艾伦(Alan)

0

您如何看待Magento 2运行缓慢?我的网站使用非常繁重的主题,在页面速度方面得分为93/100,加载时间为2秒。我想说一个更好的Magento主机,因为您的Web服务器在您网站的性能中起着很大的作用。至于“默认”模式是最慢的,根本不是真的。我在默认模式下运行商店,直到准备好切换到生产模式为止,并且在默认模式下它的得分为91/100,而在切换到生产模式后才得分为93/100。

如果您确实想使用Magento 2,则可以获得更好的主机和更好的Web服务器。


magento cache:disable负载时间超过30秒。
汤姆·安德森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.