magento几种全页缓冲加速Full Page Cache插件试用心得

magento的速度确实比较慢,但有全页缓冲,速度很快的
由于全页缓冲插件很多,最终的效果也不一至,我把我使用及测试过的种插件介绍如下,
其实所有的全页缓冲插件都能启到加速的作用,但最关键的在用户登录、增加增物车及一些需要动态变化时,全页缓冲插件可能会出问题。
1、Lightspeed Full Page Caching   500美元
http://www.magentocommerce.com/magento-connect/lightspeed-full-page-caching.html
这个插件分成两个部分,一个是块和页缓冲,这个有一定的加速作用,但是提高的部分不是很大,插件本身也少,不涉及核心文件,单买需要225美元,性价很差,不建议使用。
另一个部分就是真正的Full Page Caching了,需要将要目录的index.php换成lightspeed.php,是加速了很多,但是兼容性差,而且无法单独控制页的某个部分不缓冲。用了一段时间后,不用了。
http://www.tinybrick.com/magento-modules/performance/magento-speed-booster-module.html
这个插件有序列号保护,但代码开源,很容易破解

2、Mgt Full Page Cache   349欧元
http://www.mgt-commerce.com/speed-up-magento-by-full-page-cache.html
这个加速插的加速性能也不错,但是需要修改核心文件,增加local.xml中的配置,代码有深度加密,好处是支持apc,memcache,xcahe等加速方式,但最至命的是无法提供指定页或块不加速的功能,用了一段时间后,不用了。

3、Zoom Full-Page Cache 免费
http://www.magentocommerce.com/magento-connect/zoom-full-page-cache-1742.html
这个免费插件不错,支持magento自身需要动态缓冲的块不更新,如top.link等,后台有一个可以管理缓冲面页的地方,有缓冲的都会记录下来,基本上接近即能加速又能一些块不更新的功能,但是使用过程中发现,他无法的自定义块指定不缓冲,而且不缓冲的块都是以ajax方式,在正常缓冲代码显示后,动态跳出显示,会造成整个页跳一下,影响视觉,对于不介意这个的可以使用,推荐大家。

4、I-Speed: Performance Booster免费
http://www.magentocommerce.com/magento-connect/zoom-full-page-cache-1742.html
这个免费插件,具体不知什么原因,我没成功起来放弃,感觉好像没什么加速,

5、PageCache powered by Varnish 免费
http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.html
这个插件,加速后的效果不错,他需要与varnish功能配合,在正常访问时,加速是相当的块,但是在网站环境发生变化,如登录、注册、增加购物车后,缓冲就失效了,如果不介意这个,倒也可以用。

6、Turpentine – Varnish Cache 免费
http://www.magentocommerce.com/magento-connect/turpentine-6332.html  
这个也是varnish配合的插件,但是与PageCache powered by Varnish 相比,控制性少了些,缺点也是一样的。

7、Memcached缓冲,这个应是系统级缓冲
Memcached 是高效开源缓存机制被广泛应用到很多站点的缓存服务器。Memcached经常和MySQL服务器安装在同台服务器上,但由于数据库服务器经常需要很大内存,而Memcached对内存的需求也很大,因此这里就会有内存的瓶颈。在一些情况下,Memcached其实是从数据库服务器上分离出来,运行在独立的服务器上的,这样就避免了和数据库服务器竞争内存的情况。这个我也测试过,加速非常的快,致使一点就是但是在网站环境发生变化,如登录、注册、增加购物车后,面页上相关无法跟随变化。

8、Brim's Full Page Cache  149美元
http://www.magentocommerce.com/magento-connect/full-page-cache-7153.html
这个插件,不影响核心文件,涉及的文件自成体系,可以通过在xml定义块中增加不缓冲的语法,即可达到在全页缓冲时局部更新,其它功能测试正常,加速效果也理想,代码无加密,可以正常使用。

9、Full Page Cache Pro   349美元
http://www.magentocommerce.com/magento-connect/full-page-cache-multi-level-5450.html
这个插件涉及文件比较多,特别是js文件,安装后,系统后台崩溃了,无法测试了。

10、Full Cache  299美元
http://www.magentocommerce.com/magento-connect/catalog/product/view/id/14800/s/full-cache-9622/
这个插件,不影响核心文件,涉及的文件自成体系,可以在后台配置中直接对不需要缓冲的块进行定义,也可对url有指定元素的页不缓冲,而且有调试功能,可以在页上标注缓冲的情况,以便与我们进行了解。加速性能也很好。

11、另外还有一些apc加速,xcache加速,apc加速我试过了,没什么感觉,不知是否有其它问题。
12、memcached配合magento,在local.xml中增加相应的配置,那个速度叫做快啊,太快了,可惜网页局部信息无法根据状态更新。
13、另外还有google的pagespeed加速,这个加速只涉及到如图片,css等方面,不是代码架构层次的加速
14、网站本身的加速,最好是开启目录及产品的flat的功能,将eav方式转成平面方式,以加快网站对数据库的访问。

从上述个人体验上看,推荐8的Brim's Full Page Cache和10的Full Cache ,这两个,当然网站插件装多了,可能会冲突,大家在测试时注意。

关于magento第三方加速Speed Booster的问题

magento第三方加速Speed Booster的,价值250美元,他可能会提供给你没有限制或序列号限制的代码。
他提供CMS Blocks和CMS Page两个缓冲。
通过试验,是能够提供block和page的缓冲,加速网站速度。
但是由于CMS Blocks的缓冲也带来问题。
如果所缓冲的CMS Blocks块,本身内容是根据数据变化,如,一个块,用于显示当前产品的相关商品。
这时他把第一次这个块显示的内容缓冲下来,接下来都显示这个内容。
于是就失去了这种数据变化类型CMS Blocks的原先的意见。
其它的magento的缓冲基本上都是这付德性!
很无语!

Magento 6种优化加速技巧的总结

magento的网站实在是太慢了,想了好多办法,参考了好多资料,做了很多测试,总结一下大概的步骤如下:

1、压缩js,css代码,如果有必要把所有的css,js分别综合到一个文件中,并压缩,缓存

2、清除magento模板中不必要的注释,为所使用到的图片瘦身

3、 优化magento代码,这个步骤工作量大,但可能是效果显著的步骤,不过前提是你非常熟悉magento,彻底删除不用的模块,关闭没用的block, 清除无效,无用的xml(解析xml非常昂贵的),在一个页面中尽量不要大量调用magento的image resize功能,非常消耗内存,除非你自己优化代码。

4、mysql配置优化,充分发挥你的硬件资源,下面的数值要根据你的配置调整

key_buffer_size = 512M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 64M
tmp_table_size = 128M
query_cache_size = 96M
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300
5、将magento的var目录挂载到内存中,加快读取速度,如

mount -t tmpfs -o size=100M,mode=0777 tmpfs var

6、安装php加速器,如APC,XCACHE,eAccelerator,安装方法参考相关的网站

然而归于根本,最大的优化来自于对模板,对代码,对block的优化。

在Magento的优化中, Mysql的优化是很重要的,在Magento的官方网给出了有关Mysql的优化, 官方网并没有要我们把Mysql的存储引擎改为innodb, 但我觉的得这是很有必要的,当改成innodb后,还得把Mysql的配置文件修改修改下, 有时根据官方的文档来并不能成功, 这时就要看你的环境而定了, 下面给出我所配置的mysql文件给大家参考:

(继续)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8
#init_connect=’SET NAMES utf8′
default-storage_engine = innodb

# To allow mysqld to connect to a MySQL Cluster management daemon, uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring=”nodeid=4;host=localhost:1186″

[client]
#default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log

[Magento]
max_connections = 1000
max_connect_error = 10
table_cache = 1024
max_allowed_packet = 16M
max_heap_table_size = 64M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
tmp_tables_size = 64M
key_buffer_size = 32M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size=10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_log_buffer_size = 8M
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_buffer_pool_size = 3G
innodb_data_file_path = ibdata1:3G;ibdata2:1G:autoextend
innodb_autoextend_increment=512

这里主要讲的是,自己编译的Apache, 而如果是系统自带的话, Apache所需的模块, 系统会自动加载。

(继续)

#vi httpd.conf

ServerTokens OS

ServerRoot “/etc/httpd”

PidFile run /httpd.pid

Timeout 120

KeepAlive off

MaxkeepAliveRequests 100

KeepAliveTimeout 15

StartServers 100

MinSpareServers 100

MaxSpareServers 150

ServerLimit 256

MaxClient 256

MaxRequestsPerChild 40000

Listen *:80

在这里还要一些必须的Apache模块

1, mod_authz_host.so

2, mod_expires.so

3, mod_deflate.so

4, mod_mime.so

5, mod_dir.so

6, mod_rewrite.so 这个模块很重要, 当设置Magento地址重写时,要用到

7, mod_log_config.so

8, libphp5.so 你有可能用的是php4, 那就得改成libphp4.so

注意:

在安装好Apache后, 我们还能让Apache识别以php为后缀的文件

AddType application/x-httpd-php .php .phtml

好了, 到这就讲完了, 这章其实对Magento的优化不大, 但有些模块又不能少, 少了, Magento后台可能出问题

当我们安装好Magento时, 为了加快Magento的速度,我们一般还要做一些对于Magento服务的优化, 来提高Magento被访问的速度。 一般我们会从三个角度去考虑Magento的优化, 如: 安装Magento的系统; Magento模板中的代码; Magento所用到的数据库。 在这我们主要讲的是Magento系统的优化

Magento是在PHP环境下开发的, 所以优化PHP对Magento有着不小的影响,下面是Magento标准的PHP配置。

(继续)

一, 对于Magento所需的扩展, 只开启所需的就可以了

# Required extensions

extension=bcmath.so

extension=curl.so

extension=dom.so

extension=gd.so

extension=mcrypt.so

extension=memcache.so

extension=mhash.so

extension=pdo.so

extension=pdo_mysql.so

extension=mysql.so

extension=xmlwriter.so

下面的一些扩展并不需要开启, 我们可以把它们关闭

# Not needed extensions from default setup

;;extension=dbase.so

;;extension=json.so

;;extension=mysqli.so

;;extension=pdo_sqlite.so

;;extension=sqlite.so

;;extension=wddx.so

;;extension=smlreader.so

;;extension=xsl.so

;;extesnion=zip.so

事无绝对, 当你的系统环境需要某个扩展时, 可以按照需要开启

下面所要讲的, 也是PHP中优化的重点, 将会讲到二种方法,二选一就行了, 切忌, 不能同时应用二种方案

一,安装APC扩展, APC, 用来优化PHP本身, 提高PHP的运行速度

# APC configuration apecifics if it is used

extension=apc.so

apc.shm_size=256

apc.num_files_hint=10000

apc.user_entries_hint=10000

apc.max_file_size=5M

二,安装eaccelerator加速器,功能跟APC类似, 在这就不多说了。

安装好eaccelerator后,将会产生eaccelerator模块

zend_extension=”/usr/lib64/php/modules/eaccelerator.so”

eaccelerator.shm_size = “256″

安装APC组件为Magento加速方法和步骤

Centos系统的Lamp环境运行Magento,我们来看下如何使用APC为Magento加速。

网上安装APC的教程很多,我这里将我自己验证过的几个组件的安装命令列出来,大家参考下。如下

#yum install install
#yum install php-devel
#yum install php-pear
#yum install httpd-devel
#yum install pcre-devel

 

先安装如上几个模块,(使用yum就是很省心)。运行如下命令进行APC安装,安装过程中的问题,按照中括号中的建议值填写。
#pecl install apc

 

安装结束后有如下的提示:

# configuration option "php_ini" is not set to php.ini location
# You should add "extension=apc.so" to php.ini

意思是说,让我们在php.ihi文件中,声明加载APC这个扩展。

我的php.ini路径是 /etc/php.ini

在里面的扩展声明部分,加上如下内容即可

extension=apc.so
[APC]
apc.enabled =1
apc.shm_size=256
apc.num_files_hint=10000
apc.user_entries_hint=10000
apc.max_file_size=5M
apc.stat=1

 

 

在上面php.ini中[APC]后面的内容是对APC参数进行的设置,你可以根据你的情况来自己修改。

APC优化设置可以参考:http://blog.nexcess.net/2011/03/25/optimizing-apc-cache-settings-for-magento/

重启我们的apache服务器,我们的APC安装就结束了,下面进入Magento的配置环节。

我们去修改Magento的配置文件,文件路径 Magento根目录/app/etc/local.xml

修改后为:

<config>
    <global>
        <install>
            <date><![CDATA[Thu, 12 May 2011 05:06:06 +0000]]></date>
        </install>
        <crypt>
            <key><![CDATA[295888775466d0eb721707c95763b0be]]></key>
        </crypt>
        <disable_local_modules>false</disable_local_modules>
        <resources>
            <db>
                <table_prefix><![CDATA[]]></table_prefix>
            </db>
            <default_setup>
                <connection>
                    <host><![CDATA[localhost]]></host>
                    <username><![CDATA[root]]></username>
                    <password><![CDATA[123456789]]></password>
                    <dbname><![CDATA[shop]]></dbname>
                    <active>1</active>
                </connection>
            </default_setup>
        </resources>
        <session_save><![CDATA[files]]></session_save>
        <cache>
          <backend>apc</backend>
          <prefix>MAGE_</prefix>
        </cache>
    </global>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[thisisadmin]]></frontName>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>
 

注意,增加的代码是如下(可能因为版本变动,此设置有变化,注意自己google最新Magento文章,参考设置)

<cache>
    <backend>apc</backend>
    <prefix>MAGE_</prefix>
</cache>
 

注意,此处的’MAGE_’ 是唯一值,如果你运行了多个Magento,要给每一个写上不同的<prefix>。

最后一步,刷新Magento缓存。

这样 整个的安装配置过程就结束了。最后我们可以使用APC安装包中的apc.php文件看下我们APC运行的状态。将此文件放在你的magento网站根目录,通过  网址/apc.php 访问,会显示APC的运行信息,也可以看到我们刚才已经设置的参数信息。可以以此图来进行优化配置。