2016-12-05 98 views
0

我们有一个ASP.NET Web Forms Sitecore站点,我们使用Global.asax中的OutputCache指令,VaryByCustom属性和添加的GetVaryByCustomString()方法来使用HTML输出缓存。是否有可能从Global.asax.GetVaryByCustomString()获取当前评估的控件?

是否有可能从GetVaryByCustomString()方法获得当前控件的句柄?我们遇到了使用此方法输出缓存的问题,并将多个控件实例添加到同一页面。如果我有一个控件的句柄,我可以基于其Sitecore参数单独缓存输出(在这种情况下很重要),并使其与我们的其余缓存策略很好地匹配。

回答

0

似乎无法从Global.asax中的GetVaryByCustomString()获取当前评估的代码。然而,由于我最初的目标是改变在同一页面中出现多次的Sitecore控件的缓存输出,我发现这可以通过列出页面中的所有控件,然后在创建每个控件时递增附加到请求上下文的计数器来实现高速缓存密钥并将其附加到密钥,因为控件按确定性和可靠顺序布置。

0

我不知道为什么你会使用自定义代码来做这个缓存。如果您的控件有一个Sublayout,那么对于页面上该控件/ Sublayout的每个实例,您可以通过转到Presentation/Layout Details> Control Properties并向下​​滚动到Caching部分来激活缓存。在那里你会检查“Cacheable”和“Vary by Data”选项。

+0

首先,Sitecore缓存已知存在回发问题,不幸的是在整个代码库中广泛使用。它也不适用于其他一些场景,而不会涉及不必要的细节。并不是我们不懂如何使用它,而是它有一些缺点。当我能够在未来一年重做MVC中的整个站点时,结构将会有很大不同。 – Iucounu

相关问题