magento是最近非常火爆的开源外贸电商系统,现在国内越来越多的公司已经开始使用magento.随着使用人数的增加,magento问题也越来越突出。我发现大家最关注的莫过于“速度”,俗话说天下武功,唯快不破。当一个网站速度像蜗牛一样慢,谁都无法忍受,magento由于本身架构问题,速度成为了一个大瓶颈.下面我介绍几个效果比较好,而且简单易用的方法。
理解magento的Two-Level Caching
magento默认使用zend framework的二层缓存存储方式。就是说它使用两层结构对cache进行配合管理,一个快的,但大小有限制的结构是一层比如APC或者Memcached ,一个比较慢的结构作为第二层比如file system.每一种存储结构各有利弊,要不同情况不同分析使用,APC 和 Memcached 是使用 key/value来存储cache,他们都不支持tag。File system 和Redis 支持tag.
magento二级缓存结构工作流程图示 (Thanks to Fabrizio Branca):
以下为magento APC,Memcached,Redis缓存机制配置教程
1.文件缓存File system (var/cache)(默认)
优点:不需安装其他控件,不需要额外配置
缺点:IO读取,访问量大时降低服务器性能
2.APC – Alternative PHP Cache (Key/Value)
配置方法:
<global> ... <cache> <backend>apc</backend> <prefix>mgt_</prefix> </cache> ... </global>
3.Memcached
配置方法:
<global> ... <cache> <backend>memcached</backend><!-- apc / memcached / empty=file --> <memcached><!-- memcached cache backend related config --> <servers><!-- any number of server nodes can be included --> <server> <host><![CDATA[127.0.0.1]]></host> <port><![CDATA[11211]]></port> <persistent><![CDATA[1]]></persistent> </server> </servers> <compression><![CDATA[0]]></compression> <cache_dir><![CDATA[]]></cache_dir> <hashed_directory_level><![CDATA[]]></hashed_directory_level> <hashed_directory_umask><![CDATA[]]></hashed_directory_umask> <file_name_prefix><![CDATA[]]></file_name_prefix> </memcached> </cache> ... </global>
4.Redis
安装Magento Redis Cache插件 https://github.com/colinmollenhour/Cm_Cache_Backend_Redis
<global>
<cache>
<backend>Cm_Cache_Backend_Redis</backend> <backend_options>
<server>127.0.0.1</server>
<!-- or absolute path to unix socket -->
<port>6379</port>
<persistent></persistent>
<database>0</database>
<password></password>
<force_standalone>0</force_standalone>
<connect_retries>1</connect_retries>
<automatic_cleaning_factor>0</automatic_cleaning_factor>
<compress_data>1</compress_data>
<compress_tags>1</compress_tags>
<compress_threshold>20480</compress_threshold>
<compression_lib>gzip</compression_lib>
<!-- Supports gzip, lzf and snappy -->
</backend_options>
</cache>
</global>