ASP.NET 缓存(2)

简介:

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);




















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/588311  ,如需转载请自行联系原作者
相关文章
|
4月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
4月前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
4月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
120 1
|
4月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
4月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
124 1
|
4月前
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
|
缓存 开发框架 .NET
ASP.NET Core 缓存
Get新知识: 缓存相关概念:缓存的类型:总结:总的来说,私有缓存会减少网络带宽的需求,同时会减少从缓存到API的请求。因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。而共享缓存不会节省缓存到API的网路带宽,但是它会减少请求到API的请求。因为共享缓存是...
52 0
ASP.NET Core 缓存
|
缓存 监控 NoSQL
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
204 0
|
存储 SQL 缓存
ASP.NET Core MVC 从入门到精通之缓存
ASP.NET Core MVC 从入门到精通之缓存
143 0
|
存储 缓存 开发框架
Asp.Net Core 2.1+的视图缓存(响应缓存)
Asp.Net Core 2.1+的视图缓存(响应缓存)
96 0