您的位置:首页 > 编程语言 > ASP

ASP.NET缓存:缓存页的多个版本

2012-06-04 23:02 197 查看
Asp.net允许在输出缓存中缓存一个页的多个版本。

造成缓存多个版本的原因:

(1)初始请求 (HTTP GET) 中的查询字符串。

(2)回发时传递的控制值(HTTP POST 值)。

(3)随请求传递的 HTTP 标头。

(4)发出请求的浏览器的主版本号。

(5)该页中的自定义字符串。

缓存页多个版本方式:

(1)通过HttpCachePolicy类的属性和方法以编程方式。

(2)通过@ OutputCache指令的特性以声明方式。

VaryByParam 特性可用来声明缓存输出因查询字符串而异。

VaryByControl 特性可用来声明缓存输出因控制值而异。

VaryByHeader 特性可用来声明缓存输出因请求的 HTTP 标头而异。

VaryByCustom 特性可用来使缓存输出因浏览器类型或您定义的自定义字符串而异。

使用请求浏览器缓存页的各个版本

如果您的 Web 应用程序包含一个基于请求浏览器的类型创建不同输出的页,则可以按请求该页的浏览器的主版本来缓存页输出的版本。

(1)基于浏览器类型以声明方式缓存页的多个版本

1、@ OutputCache指令中必须包括Duration特性,Duration特性值必须为大于零的整数。该指令还必须包括VaryByParam或VaryByControl特性。

2、如果仅希望按浏览器缓存,则把VaryByCustom特性设置为“browser”,并把VaryByParam特性设置为“None”。

<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>


(2)基于浏览器类型以编程方式缓存页的多个版本

protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetVaryByCustom("browser");
}


使用参数对页的各个版本进行缓存

(1)使用参数以声明方式缓存页输出的多个版本

1、如果要根据多个参数改变输出缓存,设置VaryByParam特性值为带“;”号的参数列表。

2、如果根据所有参数改变输出缓存,设置VaryByParam特性值为“*”。

<%@ OutputCache Duration="60" VaryByParam="City" %>


<%@ OutputCache Duration="60" VaryByParam="City;ZipCode" %>


(2)使用参数以编程方式缓存页输出的多个版本

Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.VaryByParams["City"] = true;
Response.Cache.VaryByParams["Zip"] = true;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: