【问题标题】:Is it possible to get the currently evaluated control from Global.asax.GetVaryByCustomString()?是否可以从 Global.asax.GetVaryByCustomString() 获取当前评估的控件?
【发布时间】:2016-12-05 15:32:33
【问题描述】:

我们有一个 ASP.NET Web Forms Sitecore 站点,我们在其中使用了使用 OutputCache 指令、VaryByCustom 属性和 Global.asax 中添加的 GetVaryByCustomString() 方法的 HTML 输出缓存。

是否可以通过 GetVaryByCustomString() 方法获取当前控件的句柄?使用此方法和添加到同一页面的多个控件实例时,我们遇到了输出缓存问题。如果我有控件的句柄,我可以根据它的 Sitecore 参数(在这种情况下很重要)分别缓存输出,并且仍然使它与我们的其余缓存策略很好地结合。

【问题讨论】:

    标签: c# asp.net sitecore outputcache output-caching


    【解决方案1】:

    我不确定您为什么要使用自定义代码来执行此缓存。如果您的控件有一个子布局,那么对于页面上该控件/子布局的每个实例,您可以通过转到 Presentation/Layout Details > Control Properties 并向下滚动到 Caching 部分来激活缓存。在那里你会检查“可缓存”和“按数据变化”选项。

    【讨论】:

    • 一方面,众所周知,Sitecore 缓存存在回发问题,不幸的是,该问题在整个代码库中被广泛使用。它也不适用于其他一些场景,无需赘述。不是我们不了解如何使用它,而是它有一些缺点。当我能够在来年用 MVC 重做整个网站时,架构将会大不相同。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多