HttpCachePolicy和@OutputCache指令。
对于输出缓存的控制,除了使用OutputCache指令外,还可以使用HttpCachePolicy类,通过该类可以编程控制缓存。
Response.Cache属性提供了System.Web.HttpCachePolicy类的一个实例。下面是使用@OutputCache指令和HttpCachePolicy之间等效的代码:
- 存储在指定时间段的输出缓存
声明性方法:<%@ OutputCache Duration="60" VaryByParam="None" %>
编程的方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public);
- 存储在产生请求的浏览器客户端上输出缓存
声明性方法:<%@ OutputCache Duration="60" Location="Client" VaryByParam="None" %>
编程的方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Private);
- 存储在任何 HTTP 1.1 缓存功能的设备包括代理服务器和客户端请求的输出缓存
声明性方法:<%@ OutputCache Duration="60" Location="Downstream" VaryByParam="None" %>
编程的方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetNoServerCaching();
- 存储在 Web 服务器上的输出缓存
声明性方法:<%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>
编程的方法:
TimeSpan freshness = new TimeSpan(0,0,0,60); DateTime now = DateTime.Now; Response.Cache.SetExpires(now.Add(freshness)); Response.Cache.SetMaxAge(freshness); Response.Cache.SetCacheability(HttpCacheability.Server); Response.Cache.SetValidUntilExpires(true);
- 缓存对于每个 HTTP 请求到达与不同城市的输出:
声明性方法:<%@ OutputCache duration="60" varybyparam="City" %>
编程的方法:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.VaryByParams["City"] = true;
VaryByCustom 属性、 VaryByHeader 属性和 @ OutputCache 指令中的 VaryByParam 属性,HttpCachePolicy 类提供了 VaryByHeaders 属性和 VaryByParams 属性和 SetVaryByCustom 方法。
要关闭输出缓存的 ASP.NET 网页在客户端的位置和代理的位置设置 位置 属性值为 无,然后 VaryByParam 值设置为 无@ OutputCache 指令中。使用下面的代码示例关闭客户端和代理服务器缓存。
- 声明性方法:
<%@ OutputCache Location="None" VaryByParam="None" %>
- 编程的方法:
Response.Cache.SetCacheability(HttpCacheability.NoCache);