知识大全 asp.net 客户端浏览器缓存的Http头介绍

Posted 时间

篇首语:一锹挖不成水井,一天盖不成罗马城。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 asp.net 客户端浏览器缓存的Http头介绍相关的知识,希望对你有一定的参考价值。

asp.net 客户端浏览器缓存的Http头介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

让浏览器做缓存需要给浏览器发送指定的Http头 告诉浏览器缓存多长时间 或者坚决不要缓存 作的程序员 其实我们一直都在用这种方法 在OutputCache指令中指定缓存的Location为Client时 其实就是给浏览器发送了一个Http头 告诉浏览器这个Url要缓存多长时间 最后修改的时间 微软在OutputCacheModule中对这些缓存用到的Http头给我们进行了很好的封装 但是了解这些Http头可以更灵活的使用它们 和客户端缓存相关的Http头有以下几个 分别是 Expires:+过期时间 表示在指定时间后浏览器缓存失效 需要注意的是这儿的过期时间必须是HTTP格式的日期时间 其他的都会被解析成当前时间 之前 缓存会马上过期 HTTP的日期时间必须是格林威治时间(GMT) 而不是本地时间 举例

  复制代码 代码如下:

  Expires: Fri Oct : :

使用Expires过期必须要求服务器的时间是正确的 否则发送的头就会出问题 在windows服务下可以设置时间服务器来同步时间 Cache control: Cache control直译成中文就是缓存控制 它的作用就是缓存控制 这个头的值有几种 ) max age=[秒] — 执行缓存被认为是最新的最长时间 类似于过期时间 这个参数是基于请求时间的相对时间间隔 而不是绝对过期时间 [秒]是一个数字 单位是秒 从请求时间开始到过期时间之间的秒数 ) s maxage=[秒] — 类似于max age属性 除了他应用于共享(如 代理服务器)缓存 ) public — 标记认证内容也可以被缓存 一般来说 经过HTTP认证才能访问的内容 输出是自动不可以缓存的 ) no cache — 强制每次请求直接发送给源服务器 而不经过本地缓存版本的校验 这对于需要确认认证应用很有用(可以和public结合使用) 或者严格要求使用最新数据的应用(不惜牺牲使用缓存的所有好处) ) no store — 强制缓存在任何情况下都不要保留任何副本 ) must revalidate — 告诉缓存必须遵循所有你给予副本的新鲜度的 HTTP允许缓存在某些特定情况下返回过期数据 指定了这个属性 你高速缓存 你希望严格的遵循你的规则 ) proxy revalidate — 和 must revalidate类似 除了他只对缓存代理服务器起作用 举例:

  复制代码 代码如下:

  Cache Control: max age= must revalidate

很显然Cache control可以提供比Expires更灵活的缓存控制 而且它不需要依赖于服务器时间 在Asp Net中微软把对Cache control属性的设置封装到了HttpCachePolicy类中 我们可以通过Response Cache来调用以下方法来做到对Cache Control Http头值的控制

  复制代码 代码如下:

  Response CacheControl; Response Cache SetNoStore Response Cache SetMaxAge Response Cache SetProxyMaxAge Response Cache SetRevalidation

Last Modified/If Modified Since 这两个Http头是一对 前者表示某个地址的最近更新时间 是服务器端响应给客户端的 而后者是客户端浏览器发送给服务器的 告诉web服务器客户端有一个最后更改时间为什么时间的缓存 服务器端接收到If Modified Since头后则判断客户端缓存的这份url地址的缓存是否是最新的 如果是最新的则服务器端直接给客户端返回HttpStatus 意思是说这个内容在你上次请求之后没有变化过 你直接用缓存就可以了 如果服务器发现url的最后更新时间比If Modified Since的值要新 则会输出新的内容 同样微软也为我们做了服务器端设置的封装 我们可以这样调用

  复制代码 代码如下:

  Response Cache SetLastModified(DateTime) Response Cache SetLastModifiedFromFileDependencies()

如果有更复杂的需求就需要自己处理了 ETag/If None Match ETag和Last Modified类似 不过他发送的是一个字符串来标示url的版本 如果url变了则此标示也跟着变化 在浏览器发送If None Match时告诉浏览器内容已经变了 或者没变可以使用缓存 Iis会自动给静态文件加上Etag 在文件发生改变时重新生成一个Etag 这样对于一个网站中的n多个静态文件如 样式表 小图片等 客户端只下载一次就够了 可以减轻负载 在Asp Net中我们可以用以下两个方法来设置

  复制代码 代码如下:

尽管微软为我们做了很多封装 但是我们还是需要详细的了解之后才可以用好这几个Http头 cha138/Article/program/ASP/201405/30773

相关参考

知识大全 浅析HTTP消息头网页缓存控制以及header常用指令介绍

浅析HTTP消息头网页缓存控制以及header常用指令介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET缓存介绍

ASP.NET缓存介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    ASPNET缓存   

知识大全 ASP.NET缓存总结

ASP.NET缓存总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一缓存概念缓存的好处类型 

知识大全 ASP.NET缓存分析

ASP.NET缓存分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  说到ASPNET缓存那就是

知识大全 ASP.NET缓存简述

ASP.NET缓存简述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以前对缓存的认识比较零碎最

知识大全 ASP.NET 输出缓存的移除

ASP.NET输出缓存的移除  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET输出缓存

知识大全 ASP.NET2.0缓存技术

新手基础教程:ASP.NET2.0缓存技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP

知识大全 ASP.NET缓存:方法分析和实践示例

ASP.NET缓存:方法分析和实践示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽早缓存经

知识大全 ASP.NET缓存方法分析和实践示例

ASP.NET缓存方法分析和实践示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽早缓存经常

知识大全 在asp.net 中实现维护数据缓存

在项目中我们经常会用到数据缓存也会在项目处理对缓存的维护但是有些时间我们需要人为的来维护这些缓存用下面的代码来实现   将缓存信息绑定到DataGrid上   privatevoidbindCache