cache-control

HTTP header中的 Cache-control

半城伤御伤魂 提交于 2020-03-09 06:06:25
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: (1) 打开新窗口 如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器 (2) 在地址栏回车 如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。 (3) 按后退按扭 如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问 (4) 按刷新按扭 无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文件夹留下页面备份。 另外,通过指定“Expires”值也会影响到缓存。例如

HTTP所有概念

老子叫甜甜 提交于 2020-03-08 22:08:00
HTTP所有概念 上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种, 通用标头 、 实体标头 、 请求标头 、 响应标头 ,现在我们来对这几种标头进行介绍 通用标头 HTTP 通用标头之所以这样命名,是因为与其他三个类别不同,它们不是限定于特定种类的消息或者消息组件(请求,响应或消息实体)的。HTTP 通用标头主要用于传达有关消息本身的信息,而不是它所携带的内容。它们提供一般信息并控制如何处理和处理消息。 尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。响应报文也是一样的。 先列出来一个清单,讲明我们都需要介绍哪些通用标头 Cache-Control Connection Date Pragma Trailer Transfer-Encoding Upgrade Via Warning Cache-Control 缓存(Cache) 是计算机领域里的一个重要概念

Cache control (and redirection) for the latest version of a versioned restful resource

99封情书 提交于 2020-03-05 00:36:08
问题 I am working om ReSTful web service that exposes a versioned resource. I am comfortable with how this works but I have a pedantic question about the 'best' way to handle requests for the latest version of a resource with low latency. Old versions of the resource are retrievable by version as in /resource/{version} Old versions never change. This is a permalink. I can therefore return cache-control: immutable as per https://tools.ietf.org/html/rfc8246 and a max-age of 1 year (as per https:/

Cache control (and redirection) for the latest version of a versioned restful resource

╄→гoц情女王★ 提交于 2020-03-05 00:32:30
问题 I am working om ReSTful web service that exposes a versioned resource. I am comfortable with how this works but I have a pedantic question about the 'best' way to handle requests for the latest version of a resource with low latency. Old versions of the resource are retrievable by version as in /resource/{version} Old versions never change. This is a permalink. I can therefore return cache-control: immutable as per https://tools.ietf.org/html/rfc8246 and a max-age of 1 year (as per https:/

response.setHeader(\"Cache-Control\",\"no-cache\");的作用

被刻印的时光 ゝ 提交于 2020-03-04 10:10:42
1. response.setHeader("Cache-Control","no-cache"); This is used to prevent the browser from caching your dynamic content generated by a JSP or Servlet. You set this attribute in the HTTP header of the response object which would tell the browser not to cache this content. So everytime you request the page again, the browser would make a new request, instead of showing you a cached page. 2.使用服务器端控制AJAX页面缓存: response.setHeader( "Pragma", "no-cache" ); response.addHeader( "Cache-Control", "must-revalidate" ); response.addHeader( "Cache-Control", "no-cache" ); response.addHeader( "Cache-Control",

详解HTTP缓存

老子叫甜甜 提交于 2020-03-03 00:34:35
HTTP缓存是个大公司面试几乎必考的问题,写篇随笔说一下HTTP缓存。 1. HTTP报文首部中有关缓存的字段 在HTTP报文中,与缓存相关的信息都存在首部里,简单说一下首部。 首部 HTTP首部字段向请求报文和相应报文中添加了一些附加信息。本质上来说,它们只是一些键值对的列表。比如,下面的首部行会向Content-Length首部字段赋值19: Content-Length: 19 HTTP规范定义了几中首部字段。应用程序也可以随意发明自己所用的首部。HTTP首部可以分为以下几类: 通用首部 既可以出现在请求报文中,也可以出现在响应报文中。 请求首部 提供更多有关请求的信息。 响应首部 提供更多有关响应的信息。 实体首部 描述主体的长度和内容,或资源本身。 扩展首部 规范中没有定义的新首部。 想了解更多有关HTTP首部或报文的信息,个人推荐《HTTP权威指南》。 首部中与缓存有关的字段 通用首部字段 请求首部字段 响应首部字段 实体首部字段 2. 缓存的处理步骤 除了一些微小的细节,Web缓存的工作原理基本很简单,对一条HTTP GET报文的基本缓存处理过程包括7个步骤。 接收——缓存从网络中读取抵达的请求报文。 解析——缓存对报文解析,提取出URL和各种首部。 查询——缓存查看是否有本地副本可用,如果没有就向服务器获取一份副本,并将其保存在本地。 新鲜度检测—

HTTP头的Expires与Cache-control

僤鯓⒐⒋嵵緔 提交于 2020-03-02 02:14:37
1.概念 Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache) 数据包中的格式: Cache-Control: cache-directive cache-directive可以为以下: request时用到: | "no-cache" | "no-store" | "max-age" "=" delta-seconds | "max-stale" [ "=" delta-seconds ] | "min-fresh" "=" delta-seconds | "no-transform" | "only-if-cached" | "cache-extension" response时用到: | "public" | "private" [ "=" <"> field-name <"> ] | "no-cache" [ "=" <"> field-name <"> ] | "no-store" | "no-transform" | "must-revalidate" | "proxy-revalidate" | "max-age" "=" delta-seconds | "s-maxage" "=" delta-seconds | "cache-extension" 部分说明: 根据是否可缓存分为

“Cache-control”常见的取值有private、no-cache、max-age、must-revalidate等

送分小仙女□ 提交于 2020-03-01 03:27:20
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: (1) 打开新窗口 如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器 (2) 在地址栏回车 如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。 (3) 按后退按扭 如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问 (4) 按刷新按扭 无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。 另外,通过指定“Expires”值也会影响到缓存。例如

浏览器缓存相关HEADER头

女生的网名这么多〃 提交于 2020-02-28 13:39:33
强缓存 强缓存是利用Expires或者Cache-Control这两个http response header实现的,它们都用来表示资源在客户端缓存的有效期。 Expires是http1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回,用GMT格式的字符串表示,如:Expires:Thu, 31 Dec 2037 23:55:55 GMT,它的缓存原理是: 1)浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上Expires的header 2)浏览器在接收到这个资源后,会把这个资源连同所有response header一起缓存下来(所以缓存命中的请求返回的header并不是来自服务器,而是来自之前缓存的header); 3)浏览器再请求这个资源时,先从缓存中寻找,找到这个资源后,拿出它的Expires跟当前的请求时间比较,如果请求时间在Expires指定的时间之前,就能命中缓存,否则就不行。 4)如果缓存没有命中,浏览器直接从服务器加载资源时,Expires Header在重新加载的时候会被更新。 Expires是较老的强缓存管理header,由于它是服务器返回的一个绝对时间,在服务器时间与客户端时间相差较大时,缓存管理容易出现问题,比如随意修改下客户端时间,就能影响缓存命中的结果。 所以在http1

request的cache-control和response cache-control不同点

喜欢而已 提交于 2020-02-28 12:22:53
HTTP协议中,关于一些头域的解释很模糊,网上的解释有些甚至是打架的,例如cache-control:no-cache,为了搞清这个头,google了不少资料,但很多都是各有各说法,甚至相互矛盾。http header中cache-control无疑是非常重要的一个头,往往涉及到性能问题,缓存,缓存代理等等都无法避免跟cache-control打交道。当然还有其他一些头域如last-modified,但它们含义都非常明确,至少没有cache-control那么含糊。 就连浏览器之间,对cache-control也有不同的理解,导致了对这个头的不同的表现。 网上很多关于cache-control的资料写得很模糊,我觉得很多都没有,或者可能是忽略了几个地方,使得我们看着这些资料的时候,似懂非懂。或者作者觉得某些地方足够容易理解,所以根本不觉得需要强调,但正是这些被忽略掉的“前提条件”令我们即使看完资料,也很难弄懂问题。那些对cache-control进行解释的资料通常会忽略的一些"前提条件"有这几个: 1.cache-control是出现在response还是request中。很多资料在解释cache-control时候,都没有指明是response中的cache-control(也就是由服务器应答时发送的cache-control)还是request中的cache-control