Magento EE 1.9 的缓存:我们应该使用整页缓存(带有打孔)和/或“经典”块缓存吗?

Posted

技术标签:

【中文标题】Magento EE 1.9 的缓存:我们应该使用整页缓存(带有打孔)和/或“经典”块缓存吗?【英文标题】:Cache for Magento EE 1.9: Should we use full page caching (with hole punching) and/or "classical" block caching? 【发布时间】:2014-07-17 11:18:57 【问题描述】:

我们正在使用 Magento EE 1.9。

为了加快客户端网站的速度,我们正在尝试微调缓存。

如你所知 Magento 自带了不同的缓存技术。

在 Magento EE 中,我们可以使用全页缓存以及名为“打孔”的技术。 据我了解,这个缓存使用了一些容器来确定 如果应该从缓存中检索动态块 => applyWithoutApp($content) 或者如果应该使用 $this->_renderBlock() => applyWithApp($content) 实例化和渲染动态块

为了做到这一点,您必须在 cache.xml 中声明您想要“打孔”的块,其中包括其适当的容器类扩展 Enterprise_PageCache_Model_Container_Abstract 在这个容器类中,您必须实现不同的功能,例如 _getIdentifier()、_getCacheId()、_renderBlock 如您所见,Contanier 拥有自己的缓存 ID。

这里解释

http://www.magentocommerce.com/wiki/5_-_modules_and_development/block_cache_and_html_ouput 要缓存一个块,您必须通过定义 cache_lifetime,cache_tags,cache_key 直接在 bloc 的构造函数中添加数据

class NS_Module_Block_View extends Mage_Core_Block_Template 

  protected function _construct()
  
    $this->addData(array(
        'cache_lifetime'    => 120,
        'cache_tags'        => array(Mage_Catalog_Model_Product::CACHE_TAG . "_" . $this->getProduct()->getId()),
        'cache_key'         => $this->getProduct()->getId(),
    ));
  

使用后续帖子进行编辑 http://magebase.com/magento-tutorials/adding-cache-support-to-magento-blocks/

我知道静态的“​​cache_key”是不够的。 对于这些 cas,我​​们应该使用 getCacheKeyInfo 方法:

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

所有这些我回到我的问题: 据我了解,FPC + 打孔似乎是“缓存”的更完整解决方案。 但是全页缓存(带打孔)和“经典”块缓存有什么区别?

-> 由于我们使用的是 Magento EE 1.9,我们应该只使用 FPC + 打孔吗? (因为在某种程度上FPC+打孔已经是缓存块的一种方式了?)

这是否意味着“经典”块缓存已经过时或仅适用于 magento 社区版的用户?

-> 还是应该同时使用(FPC + 打孔和经典块缓存)?

在这种情况下,当块拥有自己的缓存键(或 getCacheKeyInfo())时,为容器设置缓存 id 有什么好处? 在这种情况下,这些缓存方法中的哪一种是主要的?

提前感谢您的所有回答!

【问题讨论】:

【参考方案1】:

Magento 通常使用分层缓存方法:如果***缓存没有命中,那么希望一些低级缓存可以加快响应的构建时间。

但是,对于 Magento FPC,通常的块级缓存会自动禁用。动态块的缓存在 FCP 级别完成。然而,该过程涉及来自gatCacheKeyInfo() 方法的信息以构建缓存键(并构建参数列表以“不使用应用程序”重新生成块)。

如果您使用的 FCP 与 EE 不同,那么通常的块缓存仍然可以用作缓存的后备级别。 IMO 这种方法是有意义的。

【讨论】:

以上是关于Magento EE 1.9 的缓存:我们应该使用整页缓存(带有打孔)和/或“经典”块缓存吗?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 1.9 (PayPal) 代理认证

magento 1.9 新添加的产品没有显示在分类页面?

Magento 1.9从phpMyAdmin更改基本图像

Magento 1.9 安装了“AddThis”社交分享按钮,但我们的网站上没有出现社交分享按钮

如何在magento 1.9中集成条纹

Magento 1.9 Multi Store不同的超级属性值