缓存页的多个版本
更新:2007 年 11 月
有时,您可能希望缓存某页,但是会基于请求为该页创建不同的版本。例如,根据查询字符串中传递的值,该页可能具有不同的输出。
ASP.NET 允许在输出缓存中缓存同一页的多个版本。输出缓存可能会因下列因素而异:
初始请求 (HTTP GET) 中的查询字符串。
回发时传递的控制值(HTTP POST 值)。
随请求传递的 HTTP 标头。
发出请求的浏览器的主版本号。
该页中的自定义字符串。在这种情况下,可以在 Global.asax 文件中创建自定义代码以指定该页的缓存行为。
可以通过以下两种方法来缓存页输出的多个版本:使用 @ OutputCache 指令的属性以声明方式,或者使用 HttpCachePolicy 类的属性和方法以编程方式。
@ OutputCache 指令包括四个可用来缓存页输出的多个版本的属性:
VaryByParam 属性可用来使缓存输出因查询字符串而异。
VaryByControl 属性可用来使缓存输出因控制值而异。
VaryByHeader 属性可用来使缓存输出因请求的 HTTP 标头而异。
VaryByCustom 属性可用来使缓存输出因浏览器类型或您定义的自定义字符串而异。
说明:
您必须在任何 @ OutputCache 指令中包括 VaryByParam 属性或 VaryByControl 属性。但是,如果您不需要使缓存输出因控制值或参数而异,则可以定义值为 None 的 VaryByParam。
HttpCachePolicy 类提供两个属性和一个方法,您可以通过它们以编程方式指定与以声明方式所能设置的缓存配置相同的缓存配置。使用 VaryByParams 和 VaryByHeaders 属性可以分别指定查询字符串参数和标头名称作为缓存策略改变依据。使用 SetVaryByCustom 方法可以定义要作为输出缓存改变依据的自定义字符串。