正如你可能知道,缓存是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 ,如果网址是不安全的。第四个要素是主题包的名字。第五个要素是呈现模板的主题名称。将使用所有这些阵列元件来产生高速缓存密钥块。 在我们的例子中,缓存键会自动更改时:
正如你所看到的,在缓存键的数组元素应根据不同的因素块的输出选择。在一些网站上,你可能会允许货币或语言切换,或两者兼而有之,所以在这种情况下,你将需要添加更多的关键元素,创造了独特的缓存键专用于选定的货币和/或语言,等等。 结论我们希望您发现这个简短的教程非常有用。我们建议增加块缓存支持你的街区,特别是如果你创建自定义主页模块或部件。这将提高网站相当的响应。关键是要留心有关如何创建独特的缓存键,以避免在某些情况下奇怪的显示行为。 (责任编辑:最模板) |