是否可以从 Global.asax.GetVaryByCustomString() 获取当前评估的控件?
Is it possible to get the currently evaluated control from Global.asax.GetVaryByCustomString()?
我们有一个 ASP.NET Web Forms Sitecore 站点,我们在其中使用 HTML 输出缓存,使用 OutputCache 指令、VaryByCustom 属性和 Global.asax 中添加的 GetVaryByCustomString() 方法.
是否可以从 GetVaryByCustomString() 方法获取当前控件的句柄?我们 运行 遇到了使用此方法进行输出缓存以及将控件的多个实例添加到同一页面的问题。如果我有控件的句柄,我可以根据它的 Sitecore 参数(在这种情况下很重要)单独缓存输出,并且仍然使它与我们的缓存策略的其余部分很好地结合。
我不确定您为什么要使用自定义代码来执行此缓存。如果您的控件有一个子布局,那么对于页面上 control/Sublayout 的每个实例,您可以通过转到 Presentation/Layout 详细信息 > 控件属性并向下滚动到缓存部分来激活缓存。在那里你会检查 "Cacheable" 和 "Vary by Data" 选项。
似乎无法从 Global.asax 中的 GetVaryByCustomString() 获取当前评估的代码。然而,由于我最初的目标是改变在同一页面中多次出现的 Sitecore 控件的缓存输出,我发现这可以通过列出页面中的所有控件,然后在创建每个控件时递增附加到请求上下文的计数器来实现缓存键并将其附加到键,因为控件以确定且可靠的顺序布置。
我们有一个 ASP.NET Web Forms Sitecore 站点,我们在其中使用 HTML 输出缓存,使用 OutputCache 指令、VaryByCustom 属性和 Global.asax 中添加的 GetVaryByCustomString() 方法.
是否可以从 GetVaryByCustomString() 方法获取当前控件的句柄?我们 运行 遇到了使用此方法进行输出缓存以及将控件的多个实例添加到同一页面的问题。如果我有控件的句柄,我可以根据它的 Sitecore 参数(在这种情况下很重要)单独缓存输出,并且仍然使它与我们的缓存策略的其余部分很好地结合。
我不确定您为什么要使用自定义代码来执行此缓存。如果您的控件有一个子布局,那么对于页面上 control/Sublayout 的每个实例,您可以通过转到 Presentation/Layout 详细信息 > 控件属性并向下滚动到缓存部分来激活缓存。在那里你会检查 "Cacheable" 和 "Vary by Data" 选项。
似乎无法从 Global.asax 中的 GetVaryByCustomString() 获取当前评估的代码。然而,由于我最初的目标是改变在同一页面中多次出现的 Sitecore 控件的缓存输出,我发现这可以通过列出页面中的所有控件,然后在创建每个控件时递增附加到请求上下文的计数器来实现缓存键并将其附加到键,因为控件以确定且可靠的顺序布置。