Sitecore > 禁用 html 渲染缓存

Sitecore > Disable html caching of a rendering

我正在尝试将旧项目(基于 Sitecore 8.0 的店面)升级到版本 Sitecore 8.1(目前最新的)。 在此过程中,当我看到所有类别的相同产品时,我遇到了一个问题。因此,例如,我第一次 select 一个类别并看到正确的产品。之后我选择任何其他类别,但仍然看到相同的产品(来自第一个类别)。 这些数据由 ProductList 渲染(控制器渲染)返回,并且在第一次调用后不再 运行(试图在调试模式下在 CatalogController 中达到相应的操作)。 如果我们清除所有缓存(..sitecore/admin/cache.aspx) - 然后它再次工作,但只是第一次。

我知道我无法为整个站点禁用缓存,我需要为显示商业数据的这个通用页面(项目名称中带有“*”)禁用缓存 - 所以对于所有类别和产品页。我在设计模式下检查了这个渲染,可以看到所有与缓存相关的复选框目前都没有被选中。不知道我错过了什么。

提前感谢您的帮助。

我相信您在 control/sublayout 定义级别启用了缓存,这将导致在网站的每个页面上缓存该渲染,不久前我想出了一个禁用缓存的解决方案在特定页面上特定 rendering/sublayout,同时在其他页面上保持缓存。

我基本上创建了一个带有复选框的新渲染参数模板"Cancel Cache Settings",然后在我的渲染定义项中,我将参数模板设置为新模板,如果您的站点在 Sitecore MVC 上运行,请执行以下操作:

创建一个名为 'SetCacheability'

的 class
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

希望对您有所帮助

您禁用的缓存设置位于控件级别的演示文稿详细信息中:

此外,您应该确保在您的子布局(或呈现)定义(在 /sitecore/Layout/Sublayouts 下)禁用缓存: