如何在Magento中使用单独的块缓存来实现安全和不安全的商店访问?

时间:2010-05-07 16:34:50

标签: magento

我使用Magento块缓存作为顶部导航块。问题是块必须为skin目录中的文件生成一些不能放入css文件的URL,因为文件名依赖于类别模型数据。

现在,当我使用安全连接(https://)打开magento时,导航块从缓存中获取并发送到浏览器,但是使用http:// urls会在大多数浏览器中发出关于不安全元素的警告在页面上。

我希望有安全和不安全连接的分离缓存。导航块扩展了类Mage_Catalog_Block_Navigation,因此具有以下缓存配置:

    $this->addData(array(
        'cache_lifetime'    => false,
        'cache_tags'        => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG),
    ));

1 个答案:

答案 0 :(得分:4)

比我想象的简单......

我尝试通过附加一个具有当前安全状态的标志来覆盖方法getCacheKey(),但起初这没有成功,但是在几次缓存清除之后,这似乎现在有效:

public function getCacheKey()
{
    $key = parent::getCacheKey();
    $key .= Mage::app()->getStore()->isCurrentlySecure() ? '_S' : '_U';

    return $key;
}