有关该功能的说明,请参阅this post。
我的HTML缓存已启用,我已启用"清除索引更新"我的一个渲染。
但是,我的渲染条目没有在缓存中标记任何特殊标记 - 我在使用渲染之前和之后验证了缓存内容。当然,这会导致Sitecore.ContentSearch.Maintenance.IndexDependentHtmlCacheManager中的Clear()方法无法获取它,使此功能无效。
我在Sitecore 7.2上 - 这是一个已知的错误吗?
答案 0 :(得分:0)
您可以覆盖GenerateCacheKey
处理器(或在此之后添加您自己的处理器)并更新密钥以包含_#index
。
以下代码适用于MVC。正如@jammykam所说,在WebForms中,密钥被添加到cacheKey OOTB。
public class GenerateCustomCacheKey : GenerateCacheKey
{
protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args)
{
Item renderingItem = rendering.RenderingItem.InnerItem;
var key = base.GenerateKey(rendering, args);
if (renderingItem["ClearOnIndexUpdate"].ToBool())
key += "_#index";
return key;
}
}
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<mvc.renderRendering>
<processor
type="My.Assembly.Namespace.GenerateCustomCacheKey, My.Assembly"
patch:instead="*[@type='Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey, Sitecore.Mvc']" />
</mvc.renderRendering>
</pipelines>
</sitecore>
</configuration>
答案 1 :(得分:0)
好的,事实证明这个功能目前在MVC上被窃听,至少截至2015年3月16日:
http://www.tarasalenin.com/caching-sitecore-mvc-renderings/
就是这样。有解决方法,但同时我以不同的方式排序我的问题。发布此信息以防其他人遇到同样的问题。