Sitecore>;禁用呈现的html缓存

Sitecore>;禁用呈现的html缓存,sitecore,sitecore8,sitecore-commerce-server,mvc-storefront,Sitecore,Sitecore8,Sitecore Commerce Server,Mvc Storefront,我正在尝试将旧项目(基于Sitecore 8.0的storefront)升级到Sitecore 8.1版本(目前最新版本)。 在这个过程中,当我看到所有类别的产品都相同时,我遇到了一个问题。例如,我第一次选择了一个类别,看到了正确的产品。之后,我选择任何其他类别,但仍然看到相同的产品(从第一个类别)。 这些数据由ProductList呈现(控制器呈现)返回,并且在第一次调用后不再运行(尝试在调试模式下在CatalogController中达到相应的操作)。 如果我们清除所有缓存(…sitecor

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

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


提前感谢您的帮助。

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

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

创建一个名为“SetCacheability”的类。

名称空间Sitecore.SharedResources.Pipelines.Rendering
{
公共类SetCacheability:Sitecore.Mvc.Pipelines.Response.RenderRenderRenderRendering.SetCacheability
{
受保护的覆盖布尔是可缓存的(Sitecore.Mvc.Presentation.Rendering、Sitecore.Mvc.Pipelines.Response.RenderRenderRenderRendering.RenderRenderRenderRenderingArgs args)
{
如果(!String.IsNullOrEmpty(rendering.Parameters[“取消缓存设置”])
&&rendering.Parameters[“取消缓存设置”]=“1”)
{
返回false;
}
返回base.IsCacheable(呈现,参数);
}
}
}
在include文件夹中创建补丁配置文件


以下是我写的博客:


希望这有帮助

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

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


是否检查了控制级别(页面项目的演示详细信息)和布局定义项目(在/sitecore/layouts下)上的缓存设置?我敢打赌,你只在其中一个地方签了名,而另一个地方选中了缓存复选框。是的,你的建议是正确的。最初,我检查了渲染中的缓存设置(添加到某些项目布局中),但没有检查渲染本身的设置。请加上你的建议作为回答,我想这对像我这样健忘的人可能有用。非常感谢。顺便说一句,我发现这个呈现也有一个与Url path()相关的缓存设置,但在这种情况下没有帮助。我认为它应该有效(因为每个类别都有一个不同的URL),但事实并非如此。嗨,艾哈迈德,谢谢你的帮助。Dmytro比你早一点解决了我的问题。