启用缓存
显然,优化第一步就是在Magento管理板块中启用所有可用的缓存。
压缩图片
许多人可能都忘记了图片(PNG,JPG)可以被压缩,这将降低服务器与浏览器之间的带宽。Various工具允许你批量压缩图片,比如在线工具smush.it.
禁用不需要的Magento模块
禁用不需要的模块,相当于使用更少的资源。模块禁用可以再Magento管理板块中配置,或者通过编辑app/etc/modules中的XML文件。
为小型网店启用单一目录
将小型网店从复杂的EAV结构转换为单一目录会节约不少时间。但这项优化是不可靠的,并且依赖于很多参数,所以不要轻易采用。
遵从W3C标准
我们不能否认HTML5到来的重要性,浏览器会很费时地去理解你的充满错误的网页。紧跟W3C标准将使浏览器引擎轻松解析你的HTML代码。
压缩输出
通过启用PHP设置zlib.output_compression,PHP产生的输出将在送往浏览器时被压缩。这将节省带宽。你也可以使用Apache mod_deflate 模块,这将会同时压缩非PHP输出。
配置PHP选项
大多数PHP设置不会影响Magento性能,但少数设置,比如memory_limit、max_execution_time 可以确保某些行为不超时或产生内存错误。
会话存储
Magento的会话信息可以存储在文件中或者数据库中(通过配置app/etc/local.xml)。这项优化是否恰当取决于环境的安装。如果MySQL工作顺畅,会话存储于数据库将对网站有利,反之,最好选择文件存储。
使用PHP加速器
通过操作码缓存,PHP将会稳固执行。能实现这项工作的PHP加速器有很多(APC,ZendOptimizer+,eAccelerator,XCache)。其中APC和ZendOptimizer+可以完美配合Magento。
调整PHP真实缓存路径(realpath_cache)
通过调整PHP realpath_cache_size,例如128K(默认16K),以及realpath_cache_ttl为86400,将会提升运行速度。当然,要确保你不会耗尽堆栈,因为所有Apache的成员都会消耗这个配置的大小。
使用Apache mod_expires
告知浏览器文件需要保持在缓存的时间将可以优化浏览器缓存。例如,JavaScript文件比CSS文件少很多(至少在设置初期),但或许当网站正常运行几个月后,你可以最大化截止日期。
警惕404(Not Found)错误
由于默认的Magento 404错误被Magento自己的应用捕获,这将使每次404错误都启动这些应用。所以要使用Apache日志文件确保404错误都解决了。
禁用Magento日志
你可以在Developers标签中启用日志。但Magento模块数量会导致很多日志文件需要被写入文件系统,降低网店运行速度。日志文件仅用于调试,所以不如全部禁用掉。
MySQL数据表优化
通过phpMyAdmin,你可以执行命令OPTIMIZE TABLE于指定的Magento数据表。当数据表很杂乱的时候,这将提高性能。这项优化不仅对复杂的EAV表有效,也对规律的频繁使用的MySQL表有效(比如core_config_data)。
融合CSS和JavaScript
合并所有CSS和JavaScript文件为一个文件,将仅仅需要一个HTTP请求就能完成传输。这将节约带宽。可以使用FooMan Speedster模块融合,而Magento1.4包含了融合CSS的选项(JavaScript默认被融合)。此外,FooMan Speedster还提供了去除输出空格的选项。
使用Magento编译模块
当PHP查找PHP文件时,Magento编译模块限制了PHP必定检索的目录数目,减少了PHP执行时间,提高了Magento应用的速度。
注意:仅当Magento编译模块被禁用的时候才可执行更新操作。
有一个巧妙的方法,用于极端的提高速度。可以为includes/src文件夹明确地创建tmpfs-mount。注意tmpfs-mount需要至少100Mb,推荐200Mb。(注:是兆位)
调整MySQL服务
默认的MySQL安装会消耗很多时间来运行支持环境,但这对Magento来说并不是最优方案。调整设置(如query_cache_size)将可以明显提升性能,但也会更危险,因为这将非常依赖于其他变量(数据库个数,每个数据库汇总数据表的个数,查询的个数等)。
通过内容分发网络(Content Delivery Network, CDN)提供静态内容
静态内容,诸如图片、CSS、JS文件可以通过其他最优服务器传输。例如CDN可以使静态内容贴近访问者,这对于服务全球客户的网店是至关重要的。
禁用本地Magento模块
如果你的网站不需要本地Magento模块,你可以选择完全跳过对本地模块的检索。你可以在app/etc/local.xml中找到这一选项。
留意HTTPS
当你在服务器和浏览器之间使用SSL时,加密和解密进程将加载在这两端。这也将占用少量带宽。如果你在所有或者部分页面禁用SSL也可以稍微加快Magento运行。当然这项优化与其他项比起来作用会小很多。
云计算
既然CDN可以为静态内容优化带宽,那么云计算也可以为Magento应用优化。
对于动态数据使用基于内存的文件系统
将动态数据(var/cache, var/session)存储于基于内存的文件系统(如RAMdisk、tmpfs),可以减少磁盘I/O传输。
禁用Apache超文本数据文件(htaccess-files)
当使用htaccess-files时,Apache会遍历每个路径中的目录,以查看是否存在htaccess-files。通过将Apache配置指令从超文本数据文件移至虚拟主机配置文件,并禁用超文本数据文件,Apache运行时间将降低。这项优化或许可用于大多数情况下,除了专用服务器。
使用Nginx或Litespeed
当然,Apache服务器的配置非常灵活,但对于内存使用来说,还有更好的服务器。使用Nginx或者Litespeed可以极大地提高Magento脚本运行速度。但这两种服务器需要手动为SEF URLs进行配置。
为图片使用延迟加载
通常都是图片在影响网页加载速度。与其一开始就加载图片,不如使用LazyLoad JavaScript使仅仅位于浏览器窗口内的图片被加载,并保证图片在页面滚动时仅加载一次。
最小化Apache日志
如果Apache日志最小化了,那么每次请求所需的文件操作将减少。当然,发生错误时,较少的日志将带来麻烦。你可以在Apache日志存储时优化日志文件的文件系统。