为什么全页缓存禁用块缓存?


13

我有一个静态部分,该部分包含在每个页面(导航)中,但是生成时间很长。这就是为什么我设置了缓存生存期和静态缓存密钥的原因。

正常工作,直到启用FPC。然后,仍然为新调用的页面再次生成该块,并且不从块缓存中提供该块。

在这行Enterprise_PageCache_Model_Observer

Mage::app()
    ->getCacheInstance()
    ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache

这是什么原因呢?对我来说,即使FPC处于打开状态,也仍然可以缓存某些块-因为否则,缓存无法完全提供的页面生成速度会减慢。

  1. 其背后的设计决定是什么?
  2. 围绕它有什么好的解决方案?
  3. 如果我仅删除此块缓存禁令会有害吗?

知道这是一个古老的问题,但是您发现了什么吗?
xelber

Answers:


1

此错误已在Magento 1.14.2.0中修复。(请参阅“已知问题”下的http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html


2
我刚刚在1.14.2.4上对此感到困惑。我可以看到逻辑随着时间的推移而发生了变化。该代码被if包围: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } 但是我找不到任何关于为什么禁止块缓存的理由。你能启发更多吗?
PanPipes

2

为了能够对动态块禁用FPC,例如在结帐页面或购物车页面中。关于第三个问题,我认为您不应该这样做,否则可能会破坏FPC流程(坦率地说,为了给出正确的答案,我们也应该检查源代码)。


您的第一部分与我的第一个问题有关吗?如果是,为什么需要禁用块缓存才能在结帐页面或购物车页面中禁用FPC?实际上,只有在整个页面都被缓存的情况下,块缓存才被禁用。
亚历克斯

我只是检查了控制用户cookie的源代码。如果用户已阻止cookie,则FPC将阻止缓存。_getCookie函数返回控制用户cookie的Enterprise_PageCache_Model_Cookie实例。
奥古兹Çelikdemir

这与cookie有什么关系?您在说哪个代码行?困惑
亚历克斯

亚历克斯,今晚我将再次检查并向您发送必要的代码块。
奥古兹Çelikdemir
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.