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如何根据sku显示产品销售量

magento根据sku显示产品销售量,这个功能最好放在产品页中显示
如果放在产品目录及列表页中显示,估计需要动用较多的数据库资源,没加速缓冲时谨慎使用。
以下是示范代码

 
 $sku = nl2br($_product->getSku());
                $_productCollection = Mage::getResourceModel('reports/product_collection')
             ->addOrderedQty()
             ->addAttributeToFilter('sku', $sku)
             ->setOrder('ordered_qty', 'desc')
             ->getFirstItem();
             $product = $_productCollection;
 
             echo 'Already Bought: '.(int)$product->ordered_qty; 



或者是以下方式,大同小异

function  getQuantityOrderedBySku($sku)
{
    try {
     $_product = Mage::getResourceModel('reports/product_collection')
       ->addOrderedQty()
       ->addAttributeToFilter('sku', $sku)
       ->setOrder('ordered_qty', 'desc')
       ->getFirstItem();
     if (!$_product) {
       throw new Exception('No product matches the given SKU');
     }
     return (int)$_product->getOrderedQty();
     }
     catch (Exception $e) {
     return 0;
     }
}

magento支持的paypal站内iframe支付模式

网站的站内支付,能大量提升支付的成功率,由于跳转支付存在的信任的问题,经常用户到第三方支付页后放弃支付。
其实paypal做为最大的第三方支付商,提供了各种支付手段,其中就有站内支付,由于各个国家信用程度的不同,支持站内支付方式也不一样,在magento后台选择paypal国家区域时,系统会自动进行支付方式过滤。
站内主要支付以下几个国家:
United States
United Kingdom
Australia
Canada
France
Italy
Spain
Hong Kong
Japan
paypa的支付方式基本上是叫Website Payments Pro ,各个国家名称可能会不一样。

其中United States和United Kingdom支持,在选择支付模式时直接输入信用卡资料,这种是最理想的,如下图。

其它国家支持支付在完成后通过iframe方式跳出支付信息,如下图:

其中各个国家的帐户显示的不同的语言,如香港帐户显示中文,日本帐户显示日文,这个文字由帐户所在国家决定。

大家可能通过在developer.paypal.com开 发环境中选择建立开发帐户,然后设置各个国家的测试帐户进行测试
Name on Card: Any Name
Type: VISA
Card #: 4485362859528762
CVV #: 528
在测试环境中,可用上述信用卡资料时行试支付,日期随便填,大于当前月份即可。

magento忘记密码取回从1.6后改变机制,旧版升级可能会有问题

magento忘记密码取回从1.6后改变机制,由1.6之前,在登录下选择忘记密码时,由邮件直接发送新生成的随机密码,
改成在邮件中一个重置密码的链接。
由于新旧版上的区别中,如果在模板中使用了customer.xml,由于定义上的问题,升级可能会有问题。
1.6版以前,密码的语法是: {{htmlescape var=$customer.password}}
1.6版以后,密码的链接语法是:
<a href="{{store url="customer/account/resetpassword/"_query_id=$customer.id _query_token=$customer.rp_token}}" style="color:#1E7EC8;">{{store url="customer/account/resetpassword/"_query_id=$customer.id _query_token=$customer.rp_token}}</a>
由于在customer.xml中缺少定义,会造成些链接无法访问
修在的作法是在customer.xml,增加如下:

<customer_account_resetpassword translate="label">
    <label>Reset a Password</label>
    <remove name="right"/>
    <remove name="left"/>

    <reference name="head">
        <action method="setTitle" translate="title" module="customer">
            <title>Reset a Password</title>
        </action>
    </reference>
    <reference name="root">
        <action method="setTemplate">
            <template>page/1column.phtml</template>
        </action>
        <action method="setHeaderTitle" translate="title" module="customer">
            <title>Reset a Password</title>
        </action>
    </reference>
    <reference name="content">
        <block type="customer/account_resetpassword" name="resetPassword" template="customer/form/resetforgottenpassword.phtml"/>
    </reference>
</customer_account_resetpassword>


即可恢复正常!