Sitecore 7:"Clear on Index Update" 不工作?
Sitecore 7: "Clear on Index Update" not working?
有关功能的描述,请参阅 this post。
我的 HTML 缓存已启用,并且我已为我的渲染之一打开 "Clear on Index Update"。
但是,我的渲染条目在缓存中没有标记任何特殊标记 - 我在使用渲染之前和之后验证了缓存内容。当然,这会导致 Sitecore.ContentSearch.Maintenance.IndexDependentHtmlCacheManager 中的 Clear() 方法无法拾取它,从而使该功能无用。
我使用的是 Sitecore 7.2 - 这是已知错误吗?
您可以覆盖 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>
好的,事实证明此功能目前在 MVC 上存在漏洞,至少截至 2015 年 3 月 16 日:
http://www.tarasalenin.com/caching-sitecore-mvc-renderings/
就是这样。有变通办法,但与此同时我以不同的方式解决了我的问题。发布这个以防其他人碰巧遇到同样的问题。
有关功能的描述,请参阅 this post。
我的 HTML 缓存已启用,并且我已为我的渲染之一打开 "Clear on Index Update"。
但是,我的渲染条目在缓存中没有标记任何特殊标记 - 我在使用渲染之前和之后验证了缓存内容。当然,这会导致 Sitecore.ContentSearch.Maintenance.IndexDependentHtmlCacheManager 中的 Clear() 方法无法拾取它,从而使该功能无用。
我使用的是 Sitecore 7.2 - 这是已知错误吗?
您可以覆盖 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>
好的,事实证明此功能目前在 MVC 上存在漏洞,至少截至 2015 年 3 月 16 日:
http://www.tarasalenin.com/caching-sitecore-mvc-renderings/
就是这样。有变通办法,但与此同时我以不同的方式解决了我的问题。发布这个以防其他人碰巧遇到同样的问题。