微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

页面级缓存@ OutputCache

       最近要用到缓存,所以才去找了相关资料,开始在一个用户控件头加入@ OutputCache指令,发现第一次进入页面是对了,第二次再进入时就出错了。郁闷……
这里@ OutputCache的一些参数说明:

       以声明的方式控制 ASP.NET 页或页中包含的用户控件的输出缓存策略。有关输出缓存的更多信息,请参见 ASP.NET 缓存功能
<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False" varyByControl="controlname" varyByCustom="browser | customstring" varyByHeader="headers" varyByParam="parametername" %>
一、属性
Duration
页或用户控件进行缓存的时间(以秒计)。在页或用户控件上设置该属性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出
注意   该属性是必需的。如果未包含该属性,将出现分析器错误
Location
OutputCacheLocation 枚举值之一。认值为 Any。
警告   包含在用户控件(.ascx 文件)中的 @ OutputCache 指令不支持属性
Shared
一个布尔值,确定用户控件输出是否可以由多个页共享。认值为 false。有关详细信息,请参见备注部分。
注意   包含在 ASP.NET 页(.aspx 文件)中的 @ OutputCache 指令不支持属性
varyByCustom
表示自定义输出缓存要求的任意文本。如果赋予该属性的值是 browser,缓存将随浏览器名称和主要版本信息的不同而不同。如果输入了自定义字符串,您必须在应用程序的 Global.asax 文件中重写 HttpApplication.GetvaryByCustomString 方法
varyByHeader
分号分隔的 HTTP 标头列表,用于使输出缓存发生变化。当将该属性设为多标头时,对于每个指定的标头,输出缓存都包含一个请求文档的不同版本。
注意   设置 varyByHeader 属性在所有 HTTP 1.1 缓存中启用缓存项,而不仅限于 ASP.NET 缓存。用户控件中的 @ OutputCache 指令不支持属性
varyByParam
分号分隔的字符串列表,用于使输出缓存发生变化。认情况下,这些字符串与用 GET 方法属性发送的查询字符串值对应,或与用 POST 方法发送的参数对应。当将该属性设置为多参数时,对于每个指定的参数,输出缓存都包含一个请求文档的不同版本。可能的值包括 none、* 和任何有效的查询字符串或 POST 参数名称
警告   在输出缓存 ASP.NET 页时,该属性是必需的。它对于用户控件也是必需的,除非已经在用户控件的 @ OutputCache 指令中包含了 varyByControl 属性。如果没有包含它,则发生分析器错误。如果您不想使缓存内容随任何指定参数发生变化,请将该值设为 none。如果要使输出缓存根据所有参数值发生变化,请将属性设置为 *。
varyByControl
一个分号分隔的字符串列表,用于更改用户控件的输出缓存。这些字符串代表在用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。有关详细信息,请参见缓存 ASP.NET 页的某些部分。
注意   除非已经包含了 varyByParam 属性,否则在用户控件 @ OutputCache 指令中,该属性是必需的。ASP.NET 页中的 @ OutputCache 指令不支持属性
二、备注
为页输出缓存设置值与通过 HttpResponse.Cache 属性操作 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法相同。如果在创建用户控件时设置 varyByParam 属性,可实现该控件的部分页缓存。

如果 Web 窗体页要求用户查看授权,则输出缓存将 Cache-Control HTTP 标头设置为 private。有关所有这些主题的详细信息,请参见缓存 ASP.NET 页。

如果将 Shared 属性设置为 true,则缓存的用户控件输出可以被多个 Web 窗体页访问。如果不设置为 true,认行为是为包含用户控件的每一页缓存用户控件输出一个版本。通过启用 Shared 属性,可以潜在地节省大量的内存。有关详细信息,请参见缓存 ASP.NET 页的某些部分。

三、示例
下面的示例说明了如何设置页或用户控件进行输出缓存的持续时间。

<%@ OutputCache Duration="100" varyByParam="none" %>
一个示例说明了如何指示输出缓存来对页或用户控件进行缓存,此缓存处理是根据来自窗体的 POST 或来自查询字符串的位置和计数窗体参数进行的。每个收到的具有不同位置或计数参数(或两者)的 HTTP 请求都进行 10 秒的缓存处理。带有相同参数值的任何后继请求都将从缓存中得到满足,直至超过输入的缓存期。

<%@ OutputCache Duration="100" varyByParam="location;count" %>

http://www.cnblogs.com/baoposhou/archive/2006/04/20/380636.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐