magento从2007年发展至今,也经历了十余年的磨练,如今也迎来了magento的换代产品magento2,无论从安全性,稳定性还是速度,其实都已经做的很好了。但现如今还有客户说magento速度很慢,那这类客户肯定是道听途说,自己根本就还没有搭建一个magento网站,网上说magento慢的帖子那都是10年左右的老帖子了。

当然了,无论是magento 1还是magento 2,它可扩展性,灵活性,系统安全性和可靠性方面处于领先地位,但是所有Magento的高级功能和特性都是以拥有大量文件和大型数据库为代价的,也正因此,从理论上来说要比其他平台速度相对慢点,微不足道的。也可以从以下方面做一些优化。

一、服务器的选择

迈向优化Magento性能的第一步应该是找到一个适合的好的Magento服务器,magento对服务器的要求一向很高,所以我建议选择独立云服务器,服务器内部优化配置自己掌控,当然这也需要专业的技术做支撑。如果有成本的限制,比如刚创业的小商家,可以找一家可靠的共享托管服务器,针对magento优化的共享服务器。我可以推荐一家专门针对magento优化的服务器托管商SiteGround。推荐选择GoGeek套餐。这样后期如果做的好可以升级独立云服务器,节省成本。

二、数据库服务器

大部分网站直接把网站程序服务器和数据库服务器共用,当然这在数据量小,请求量少的情况下还是可行的,一旦数据量和数据请求量上去了,那网站的速度是非常慢的。如果遇到这种情况,我的建议是直接上RDS,不懂的可以搜索RDS,可以称之为云数据库。前不久接手了一个二手项目,用的是magento2.1.5,我还记得3月份开发的一个2.1.5版本的项目,那个痛苦啊简直不敢想象,无论是线上还是本地刷新一个页面比蜗牛还慢,而接手的这个项目竟然秒开,原来一看配置是用了RDS,这就是花了钱的区别啊。当然现在的magento1.9和magento2.1.6以上版本都还是非常快的。

三、CDN加速

我们打开浏览器按"F12"选择"Network",然后运行网站,我们会看到加载这个网站的静态文件所需的时间(比如:图片,js,css),插一句,如果有的图片加载时间过长,可以用工具适当压缩图片。当然,无论你的网站有大型图片还是居多的css和js文件,都可以通过cdn来加载,这意味着你的图片和css,js文件将从另外一台服务器上加载,并且可以在加载页面时防止服务器上出现不必要的压力。从而提高加载速度。

以上三点都是需要Money,当然这些Money花的是值得的,而且是物美价廉。下面我简单介绍下通过magento后台设置来进一步优化速度。

1.进入到System > Configuration > Catalog > FrontEnd,在 ‘Use Flat Catalog Category’ 和 ‘Use Flat Catalog Product’.选择“Yes”。我解释下,magento数据库采用EAV模型,说简单点就是要想查询一个数据,得从好几个表里面联合查询才能得到你想要的数据,而上面设置后,那么我们的程序在加载分类和产品相关的数据时就直接单表查询,单表查询和多表查询哪个速度快就不用我说了吧。

2.禁用日志记录, 进入到System -> Configuration -> Advanced -> Developer -> Log Settings 来禁用

3.另一个重要的步骤是定期清理cron和日志。进入到System > Configuration > Advanced > System -> Log Cleaning,在这里你应该启用日志清理,并设置尽可能最小的时间。

4. 合并css和js文件,进入到System > Configuration > Developer进行设置.合并意味着减少请求,从而提升速度。在此提醒,如果是经过二次开发的网站谨慎操作,合并之后可能会出现问题,我建议在具有丰富经验的magento开发人员的指导下进行。

5.运行预编译,进入到 System > Tools > Compilation,运行预编译,这将提升网站加载速度高达50%以上。但因为一些用户操作不当导致网站无法访问,我之前写过一篇文章,解决magento开启Compilation预编译网站无法访问

6.最后一步就是开启缓存,进入到System > Cache Management

以上六点为magento 1的后台操作指导,magento2方法一样,只是路径不同,我就不再赘述。magento2更多的时候需要去运行命令,这就需要更专业的人士啦。magento2对技术的要求性还是很高的。另外magento 2如果切换到生产环境模式速度也是非常快的。在网站的根目录下再行如下命令:

php bin/magento deploy:mode:set production


最后补充一点,能花钱解决的就花钱解决,自己去折腾肯定是浪费时间的,最后还解决不好,时间就是金钱,找专业的人做专业的事才是最划算的