【问题标题】:Output caching a page except a user control in it输出缓存页面,但其中的用户控件除外
【发布时间】:2011-03-04 12:13:50
【问题描述】:

我有一个包含用户控件的页面。页面结构如下图:

如果您看不到上面的图片,请在http://i54.tinypic.com/2r4id5f.jpg查看。现在,除了UserControl的内容,我想缓存整个页面。我尝试在 .aspx 页面中使用 OutputCache 属性,但它也缓存了 UserControl 的内容。

请告诉我如何才能缓存除用户控件之外的页面内容。

提前致谢。

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    我认为您可以使用asp.net Substitution control 来实现这一点。这是ScottGu walking through an example的链接。

    基本的想法是你像往常一样缓存整个页面,但标记可以为每个请求替换的替换部分。

    【讨论】:

      【解决方案2】:

      我想你正在寻找VaryByControl。还可以查看this post 的片段缓存

      【讨论】:

        【解决方案3】:

        看看使用替换。

        This should help

        但是,问题在于,由于替换是在页面生命周期之外完成的,因此您无法为替换呈现用户控件。您必须编写一个返回字符串以进行替换的方法。但这可能对你有用。

        【讨论】:

          【解决方案4】:

          您是否尝试将@OutputCache 添加到用户控件和页面,但用户控件设置了varyByParam="qsvalue;postvalue",其中qsvalue 是您为页面的每次调用随机生成的查询字符串,后值相同用于回发。

          用户控件仍然会被缓存,但理论上它不应该被缓存命中,因为 qsvalue/postvalue 总是与缓存的不同。它可能无法很好地扩展 - 最好将持续时间设置为最短,以防止它们在缓存中堆积。

          【讨论】:

          • 不,这行不通。页面缓存优先于用户控件缓存。
          猜你喜欢
          • 2021-05-21
          • 1970-01-01
          • 2011-03-20
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多