我相信您在控制/子布局定义级别上启用了缓存,这将导致在网站上的每个页面上缓存该渲染,不久前我能够提出一个解决方案来禁用特定页面上特定渲染/子布局的缓存,同时将其缓存在其他页面上。
我基本上创建了一个带有复选框“取消缓存设置”的新渲染参数模板,然后在我的渲染定义项中,我将参数模板设置为新模板,如果您的网站在 Sitecore MVC 上运行,请执行以下操作:
创建一个名为“SetCacheability”的类
namespace Sitecore.SharedResources.Pipelines.Rendering
{
public class SetCacheability : Sitecore.Mvc.Pipelines.Response.RenderRendering.SetCacheability
{
protected override bool IsCacheable(Sitecore.Mvc.Presentation.Rendering rendering, Sitecore.Mvc.Pipelines.Response.RenderRendering.RenderRenderingArgs args)
{
if (!String.IsNullOrEmpty(rendering.Parameters["Cancel Cache Settings"])
&& rendering.Parameters["Cancel Cache Settings"] == "1")
{
return false;
}
return base.IsCacheable(rendering, args);
}
}
}
在包含文件夹中创建补丁配置文件:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<mvc.renderRendering>
<processor patch:instead="processor[@type='Sitecore.Mvc.Pipelines.Response.RenderRendering.SetCacheability, Sitecore.Mvc']"
type="Sitecore.SharedResources.Pipelines.Rendering.SetCacheability, [YOUR ASSEMBLY NAME]"/>
</mvc.renderRendering>
</pipelines>
</sitecore>
</configuration>
这是我写的博客:http ://www.sitecorecoding.com/2014/09/disabling-caching-for-rendering-on-some.html
希望这可以帮助