Sitecore>禁用渲染的html缓存

时间:2016-08-02 14:45:21

标签: sitecore sitecore8 sitecore-commerce-server mvc-storefront

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

我知道我无法禁用整个网站的缓存,我需要为此通用页面(项目名称中包含" *")显示商业数据 - 因此适用于所有类别和产品页面。我在设计模式下检查了这个渲染,并且可以看到当前未选中与缓存相关的所有复选框。不知道我错过了什么。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我相信你已经在控制/子布局定义级别上启用了缓存,这将导致在网站上的每个页面上缓存该渲染,不久之前我能够提出一种解决方案来禁用特定渲染/子布局的缓存在特定页面上,同时将其缓存在其他页面上。

我基本上创建了一个带有复选框“取消缓存设置”的新渲染参数模板,然后在我的渲染定义项中,我将参数模板设置为新模板,如果您的站点在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

希望这有帮助

答案 1 :(得分:1)

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

Presentation-level caching

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

Sublayout definition caching