2

我浏览了很多论坛,但我无法解决 Magento EE 1.11 版本中的 FPC 问题。当我浏览移动主题时,由于 FPC,它正在使用 web 主题。如果我禁用 FPC,性能会下降。

有人可以帮我解决这个问题吗?

4

3 回答 3

2

主题不用作 FPC uri 的一部分,因此每个包只有一个缓存。

我写了一个小扩展来解决这个问题,你可以在 Github 上获取它。

https://github.com/benjy14/MobileFpcFix

于 2013-01-06T01:59:30.803 回答
1

一个不需要任何代码修补的简单解决方案:

将具有与主题部分中的正则表达式相同的异常添加到包部分中,并将其链接到与“当前包名称”设置为完全相同的包名称。

先决条件:
主题级别的每个部分只有一个例外,例如,iPhone|iPad -> iphone
(而不是iPhone -> iphone+ iPad -> iphone

解释为什么它起作用:
企业页面缓存在生成cacheid时考虑了包异常。
但是,它不会检查包名称是否相同!
所以即使异常包与主包相同,也会生成不同的cacheid,而且由于主题部分的正则表达式异常相同,它们将使用新的chacheid存储在全页缓存中。

示例: 在“企业”包中,有 2 个主题“默认”和“iPhone”。
您希望通过iPhone|iPad 在“主题”小节中添加“模板”、“皮肤”和“布局”的例外来运行主题“iphone”。

在“包”小节中:
将“当前包名称”设置为“企业”。使用-> "enterprise"
将例外添加到包中iPhone|iPad

在“主题”小节中:
将例外添加到“模板”,iPhone|iPad -> enterprise
将例外添加到“皮肤”,iPhone|iPad -> enterprise
将例外添加到“布局”,iPhone|iPad -> enterprise
将“默认”设置为“默认”

注意: 测试前不要忘记在 System->Cache Management 中清除 FPC。

于 2014-08-14T21:14:44.133 回答
1

我感觉 Enterprise/PageCache 中的设计异常支持在级别而不是主题级别上工作。查看 app/code/core/Enterprise/PageCache/Model/Observer.php 中引用设计异常的代码。我的第一个建议是联系 EE 支持,也许他们可以提供适当的解决方案或补丁。或者,您可以通过重写 enterprise_pagecache/processor 来修改缓存密钥机制:

public function prepareCacheId($id)
{
    $package         = Mage::getDesign()->getPackageName();
    $templateTheme   = Mage::getDesign()->getTheme('template');
    $id              = $id.'_'.$package.'_'.$templateTheme;
    return parent::prepareCacheId($id);
}
于 2012-09-13T18:58:46.777 回答