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

     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特性值必须为大于零的整数。该指令还必须包括VaryByParamVaryByControl特性。

                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;

 

posted @ 2012-06-04 23:02  蒹葭白露  阅读(240)  评论(0编辑  收藏  举报