zoukankan      html  css  js  c++  java
  • 页面级缓存@ 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" %>

  • 相关阅读:
    Visual C#常用函数和方法集汇总
    基于窗体的/Cookie 身份验证示例
    ASP.NET状态存储管理九大兵器之六(缓存)
    ASP.NET中TreeView控件使用
    用.net操作word
    Array排序函数
    用C#制作PDF文件全攻略
    TreeView IE Web 控件的使用(很直观)
    windows共享与权限问题(总结)
    RndNum 生成随机字符串,包含数字和小写字母
  • 原文地址:https://www.cnblogs.com/baoposhou/p/380636.html
Copyright © 2011-2022 走看看