输出缓存除页面中的用户控件之外的页面

时间:2011-03-04 12:13:51

标签: asp.net caching

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

enter image description here

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

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

提前致谢。

4 个答案:

答案 0 :(得分:0)

看看使用替换。

This should help

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

答案 1 :(得分:0)

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

基本思想是按照惯例缓存整个页面,但标记可替换每个请求的替换部分。

答案 2 :(得分:0)

我认为您正在寻找VaryByControl。另请查看片段缓存中的this post

答案 3 :(得分:-1)

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

用户控件仍然会被缓存,但理论上它永远不应该受到攻击,因为qsvalue / postvalue总是与缓存不同。它可能无法很好地扩展 - 最佳设置持续时间也是最小的,以防止大量数据库在缓存中累积。