我正在尝试将旧项目(基于Sitecore 8.0的店面)升级到Sitecore 8.1版本(目前最新版本)。 在此过程中,当我看到所有类别的相同产品时,我遇到了问题。因此,例如,我首次选择一个类别并查看正确的产品。之后我选择任何其他类别,但仍然看到相同的产品(来自第一类)。 这些数据由ProductList呈现(控制器呈现)返回,并且在第一次调用之后不再运行(尝试在调试模式下在CatalogController中达到相应的操作)。 如果我们清除所有缓存(.. sitecore / admin / cache.aspx) - 然后它再次工作,但只是第一次。
我知道我无法禁用整个网站的缓存,我需要为此通用页面(项目名称中包含" *")显示商业数据 - 因此适用于所有类别和产品页面。我在设计模式下检查了这个渲染,并且可以看到当前未选中与缓存相关的所有复选框。不知道我错过了什么。
提前感谢您的帮助。
答案 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)