当前位置: 首页>>技术问答>>正文


为什么Magento 2非常慢?

webfans 技术问答 , , 去评论

问题描述

我使用了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,我猜这就是为什么它很快。

我不得不购买亚马逊WS帐户,我不知道为什么我猜我的网站实际上是由亚马逊托管的。

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

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

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

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

最佳解决办法

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

模式:Magento 2引入了模式,默认模式最慢。尝试使用开发人员模式,并始终以生产模式运行实时存储。更多信息here

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

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

Memcache:Memcached是一个in-memory key-value存储,用于从数据库调用,API调用或页面呈现的结果中获取任意数据(字符串,对象)的小块。在Magento 2中,它可用于sessions

PHP 7:Magento 2与开箱即用的PHP 7兼容。有很多关于PHP 7如何影响性能的研究。

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

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

对于一个非常坚实的开发环境,我的个人推荐是Paliarush’ Vagrant或我从Magento获得的VM课程。即将推出官方码头图片。

次佳解决办法

即使在开发者模式下,Magento运行也相当不错。它确实需要一些初始配置。

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

使用最新版本,因为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. 如果尚未设置为开发人员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 Bundling =是

  • 缩小JS文件=是

CSS设置

  • 合并CSS =是

  • 缩小CSS =是

在每个步骤刷新缓存后,从此处执行缓存刷新,这是尝试改善加载时间的基准。

php -f bin/magento cache:flush

使用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

我还建议使用AWS RDS等云数据库,这样可以省去配置mysql的麻烦。

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

你会发现它运行得相当好。

从这里进一步了解你可以添加Varnish,切换到Nginx为静态文件添加CDN。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2404.html,转载请务必附带本地址声明。