我有一个问题似乎与CMS静态块的缓存有关。
我有一个cms页面,在该页面中,我正在渲染许多cms静态块。CMS页面内容的简化版本如下所示:
<div class="cms-block-1">{{block type="cms/block" block_id="banner_home"}}</div>
<div class="cms-block-2">{{block type="cms/block" block_id="promo_home_1_1"}}</div>
<div class="cms-block-3">{{block type="cms/block" block_id="promo_home_1_2"}}</div>
<div class="cms-block-4">{{block type="cms/block" block_id="promo_home_2_1"}}</div>
<div class="cms-block-5">{{block type="cms/block" block_id="promo_home_2_2"}}</div>
<div class="cms-block-6">{{block type="cms/block" block_id="promo_home_2_3"}}</div>
<div class="cms-block-7">{{block type="cms/block" block_id="promo_home_3_1"}}</div>
<div class="cms-block-8">{{block type="cms/block" block_id="promo_home_3_2"}}</div>
该页面将在清除块缓存后立即按预期加载,该页面如下所示:
<div class="cms-block-1">banner content</div>
<div class="cms-block-2">promo_home_1_1 content</div>
<div class="cms-block-3">promo_home_1_2 content</div>
<div class="cms-block-4">promo_home_2_1 content</div>
<div class="cms-block-5">promo_home_2_2 content</div>
<div class="cms-block-6">promo_home_2_3 content</div>
<div class="cms-block-7">promo_home_3_1 content</div>
<div class="cms-block-8">promo_home_3_1 content</div>
但是,在初始页面加载之后,每个后续页面加载的内容都不正确。看起来像这样:
<div class="cms-block-1">banner content</div>
<div class="cms-block-2">promo_home_1_1 content</div>
<div class="cms-block-3">promo_home_1_2 content</div>
<div class="cms-block-4">promo_home_1_1 content</div>
<div class="cms-block-5">promo_home_1_2 content</div>
<div class="cms-block-6">promo_home_2_1 content</div>
<div class="cms-block-7">promo_home_2_2 content</div>
<div class="cms-block-8">promo_home_2_3 content</div>
在第二个示例中,您可以看到前两个促销是正确的,但是此后的所有内容都显示的block_id内容错误。此外,块promo_home_1_1和promo_home_1_2均被渲染两次,而promo_home_3_1和promo_home_3_2则从不渲染。就像block_id及其关联的静态块内容之间的映射一样,它以某种方式被混淆了。这与缓存有关,好像没有启用块缓存,那么我再也看不到问题了。
另外,可能值得注意的是,该页面以前可以在EE 1.13上运行,但是在升级到EE 1.14.2之后,此问题开始出现。
在不知道系统中发生了什么其他情况的情况下,我很难说出问题出在哪里,但是我希望有人会在我心中out满时,至少可以给我一些指导。
更新:
我也尝试了小部件,例如
<div class="cms-block-1">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="63"}}</div>
<div class="cms-block-2">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="64"}}</div>
<div class="cms-block-3">{{widget type="cms/widget_block" template="cms/widget/static_block/default.phtml" block_id="65"}}</div>
在这种情况下,即使ID指向数据库中的不同块,所有3个块都返回相同的内容。清除缓存后,返回的块有时会更改,但是所有三个小部件仍将具有相同的内容。