如何添加缓存支持的Magento模块

   正如你可能知道,缓存是Magento的一个重要特征,保持Magento站点的性能。默认情况下,Magento的提供了一个缓存机制,布局,块,采集数据和配置。通常情况下的布局更新,配置数据等页面加载每次保持不变。从多个文件或加载获取更新的布局和XML文件和数据库成本显著大量的执行时间,合并的配置数据。缓存提供了一种机制,以准备和方便地存储所有的数据,因此它可以快速地检索到的页面加载,以节省执行时间。

在本教程中,我们将通过怎样准备你的自定义块的块缓存。

在块缓存Magento的存储块到缓存的HTML输出,随后直接从它加载的内容。默认情况下,Magento的使用块缓存仅用于页眉,页脚和顶部导航,因为它们的内容不经常改变。然而,使用高速缓存的其它块也是可能的。

缓存生存

启用高速缓存为特定块的最简单的方法是,在  cache_lifetime  数据。这可以通过布局的XML来进行:

<block type="mb_example/cached" name="magebase.example">
    <action method="setCacheLifetime">
        <lifetime>3600</lifetime> <!-- Cache Lifetime of 1 hour -->
    </action>
</block>

或者它也可以在被定义  _construct()  的块类的方法:

 

<?php
class Magebase_Example_Block_Cached extends Mage_Core_Block_Abstract
{
    protected function _construct()
    {
        $this->setCacheLifetime(3600);
    }
    ...
}

缓存的生命周期以秒为单位指定的时间,它定义了缓存的过期时间。在我们的例子中,我们定义了缓存的生存时间为3600秒即1小时。所以我们的高速缓存将在1小时后终止,然后重新生成。如果缓存的生命周期是通过为假,缓存将永不过期。

缓存标签

另外,以高速缓存生命周期中,我们可以指定缓存标签。标签是有用的,以编程方式确定特定的缓存类型。在我们的例子中,我们将增加两个缓存标签:  商店  和  cms_block

<?php
class Magebase_Example_Block_Cached extends Mage_Core_Block_Abstract
{
    protected function _construct()
    {
        $this->addData(array(
            'cache_lifetime' => 3600,
            'cache_tags'        => array(Mage_Core_Model_Store::CACHE_TAG, Mage_Cms_Model_Block::CACHE_TAG)
        ));
    }
    ...
}

缓存键

也许您准备块缓存中最重要的部分是指定缓存键。缓存键唯一标识每个缓存项。如果没有指定缓存键,Magento的使用模块的名称与布局作为缓存键。然而,这是增加高速缓存支持块时,来定义缓存键一个很好的做法。

定义一个高速缓存项,我们可以添加一个静态值  cache_key属性  通过布局的XML同样在上面的例子中,以高速缓冲存储器寿命或者添加称为数据密钥  cache_key属性  通过  _construct()  方法。一个唯一的静态字符串值足以定义一个缓存键,但是,我们应该考虑这样一个场景,当块有不同的输出为不同的商店,主题等...

例如,块可以有不同的主题不同的HTML输出。如果我们定义一个静态缓存密钥,这将是相同的任何主题。因此,我们的高速缓存将存储的第一个渲染输出,无论是主题。当一个主题被改变,或者在同一个Magento的使用由另一个网站安装,相同的HTML会从高速缓存中返回。这就是为什么它是有依靠的主题,包装,储存等缓存键是个好主意

创造了独特的缓存键,我们应该重写该方法  getCacheKeyInfo()  在我们的块类,并返回缓存关键部位的数组:

public function getCacheKeyInfo()
{
    return array(
        'EXAMPLE_BLOCK',
        Mage::app()->getStore()->getId(),
        (int)Mage::app()->getStore()->isCurrentlySecure(),
        Mage::getDesign()->getPackageName(),
        Mage::getDesign()->getTheme('template')
    );
}
 
 

这里,该方法返回的数组。第一个要素  “EXAMPLE_BLOCK”  是我们的唯一标识符。第二个因素是当前店铺ID。第三个元素是  1  ,如果当前的URL是安全的(HTTPS://)或  0  ,如果网址是不安全的。第四个要素是主题包的名字。第五个要素是呈现模板的主题名称。将使用所有这些阵列元件来产生高速缓存密钥块。

在我们的例子中,缓存键会自动更改时:

  1. 客户浏览到不同的商店
  2. 以不安全(HTTP://),反之亦然:网址是从安全(// HTTPS)改变
  3. 主题包是由管理员更改
  4. 主题模板由管理员更改

正如你所看到的,在缓存键的数组元素应根据不同的因素块的输出选择。在一些网站上,你可能会允许货币或语言切换,或两者兼而有之,所以在这种情况下,你将需要添加更多的关键元素,创造了独特的缓存键专用于选定的货币和/或语言,等等。

结论

我们希望您发现这个简短的教程非常有用。我们建议增加块缓存支持你的街区,特别是如果你创建自定义主页模块或部件。这将提高网站相当的响应。关键是要留心有关如何创建独特的缓存键,以避免在某些情况下奇怪的显示行为。

(责任编辑:最模板)


source: http://www.zuimoban.com/php/magento/2789.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值