设置页的可缓存性
更新:2007 年 11 月
页或用户控件的可缓存性是指是否可以在页的响应生命周期内在设备上缓存页。可缓存页的设备包括发出请求的浏览器、响应请求的 Web 服务器以及请求或响应流中其他任何具有缓存功能的设备,如代理服务器。
当 Web 服务器向请求浏览器发送响应时,服务器会在响应的 HTTP 头中包含一个 Cache-Control 字段,该字段定义可以缓存该页的设备。根据您应用程序的需要,可以分别定义哪些设备应该或不应缓存各个 ASP.NET 页。例如,您可能希望用户登录页的可缓存性设置不同于显示产品选择的目录页的对应设置。对于登录页,出于安全方面的考虑,您可能希望只将页缓存到服务器上,而目录页可以缓存到任何设备上。
对于 ASP.NET 页,可以使用 HttpCacheability 枚举中的值设置可缓存性。该枚举具有下列值。前三个值与 Cache-Control HTTP 头设置直接对应,后三个值为特殊值。
NoCache 指定发出请求的设备每次应从 Web 服务器获取响应。
Public 允许由客户端和共享(代理)缓存来缓存响应。
Private 指定响应只能在客户端上缓存,而不能由共享(代理服务器)缓存来缓存。
Server 指定仅在原始服务器上缓存响应。
ServerAndNoCache 应用 Server 和 NoCache 两者的设置,以指示在该服务器上缓存内容,但显式拒绝其他所有服务器缓存响应的功能。
ServerAndPrivate 指定仅在原始服务器和请求客户端上缓存响应;不允许代理服务器缓存响应。
您可以通过在 @ OutputCache 指令中包含 Location 属性并指定 OutputCacheLocation 枚举值之一,以声明的方式设置页的可缓存性。还可以使用 SetCacheability 方法为页指定 HttpCacheability 值,从而以编程方式设置该页的可缓存性。可以通过 Response 类的 Cache 属性访问该方法。
说明: |
---|
如果您使用 @ OutputCache 指令设置页的可缓存性,则必须声明 Duration 属性,另外还必须声明 VaryByControl 属性,或同时声明 VaryByParam 属性和 Location 属性。必须将 Duration 属性设置为大于零的值。如果不希望使用 VaryByParam 或 VaryByControl 参数的功能,可以将 VaryByParam 属性设置为“None”。有关更多信息,请参见如何:设置 ASP.NET 页缓存的过期时间值和缓存页的多个版本。 |
作为使用 @ OutputCache 指令设置页可缓存性的替换方法,可以在应用程序的 Web.config 文件中创建缓存配置文件,然后在页中引用该配置文件。有关更多信息,请参见 ASP.NET 中的缓存配置。