http1.0的,等于cache-control:no-cache,pragma优先级高于expires 条件头部 Last-Modified 服务器响应时将文本最后修改时间放在此头部一起传送,...| 服务器响应时输出资源的最后响应时间(从本地缓存读取的资源不会有变化,也就是cache-control控制),而304的吃响应是有变化的 2....(而非代理服务器的缓存),也就是响应必须来源于原始服务器 proxy-revalidate:与must-revalidate类似,但仅能用于共享缓存(代理服务器) s-maxage:与max-age一致...,完全按钮响应的max-age来控制缓存了,firefox是按照http规范实现的。...# 禁止缓存的文件 network: # 回退文件(页面无法访问时回退的页面) fallback: 事件与状态 5.1 状态 状态值 说明 0 未缓存 1 空闲(缓存为最新状态) 2
在客户端使用Date首部,将响应中Date首部的值与当前时间进行比较,如果响应中的日期值比较早,客户端通常就可以认为是一条缓存的响应。...首部 描述 Cache-Control:max-age max-age值定义了文档的最大使用期—从第一次生成文档到文档不再新鲜、无法使用为止(单位:秒) Cache-Control:max-age=3600...HTTP允许缓存向原始服务器发送一个“条件Get请求”,请求服务器只有在文档与缓存中现有的副本不同时,才回送对象主体;否则值返回304 Not Modified,不携带主体。...注意:如果返回304,不会有内容,节省请求大小! 控制缓存的能力 服务器可以通过HTTP定义的几种方式来指定在文档过期之前可以将其缓存多长时间。...注意:HTML2.0定义了来标记非缓存,其并不是控制文档缓存特性的最好方法。
HTTP没有为用户提供一种手段来区分响应是否缓存命中的,还是访问原始服务器得到的。...在客户端使用Date首部,将响应中Date首部的值与当前时间进行比较,如果响应中的日期值比较早,客户端通常就可以认为是一条缓存的响应。...首部 描述 Cache-Control:max-age max-age值定义了文档的最大使用期—从第一次生成文档到文档不再新鲜、无法使用为止(单位:秒) Cache-Control:max-age=3600...HTTP允许缓存向原始服务器发送一个“条件Get请求”,请求服务器只有在文档与缓存中现有的副本不同时,才回送对象主体;否则值返回304 Not Modified,不携带主体。...**注意:**如果返回304,不会有内容,节省请求大小! 控制缓存的能力 服务器可以通过HTTP定义的几种方式来指定在文档过期之前可以将其缓存多长时间。
四、如何控制缓存? 缓存规则可以设置在html的meta标签,也可以设置在http协议头内。...4.2、HTTP协议头 http请求和响应头中,与缓存相关的常见类型: 规则 消息报头 值/示例 类型 作用 新鲜度 Pragma no-cache 响应 告诉浏览器忽略资源的缓存副本,每次访问都需要去服务器拉取...若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),包括更新Last-Modified的值,HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304(...两者可以一起使用,服务器优先验证ETag,一致时,才会继续比对Last-Mofifed,才决定是否要返回304。...http响应头中不包含Last-Modified/ETag,也不包含Cache-Control/Expiress的请求无法被缓存。
在HTTP请求和响应的消息报头中,常见的与缓存有关的消息报头有: ? Cache-Control cache-control的种类这么多,然而怎么使用它们呢: ?...Last-Modified与ETag是可以一起使用的,服务器会优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304。...一般情况下,两者会配合一起使用,因为即使服务器设置缓存时间, 当用户点击“刷新”按钮时,浏览器会忽略缓存继续向服务器发送请求,这时Last-Modified/ETag将能够很好利用304,从而减少响应开销...无法被浏览器缓存的请求: HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache,或Cache-Control:max-age=0等告诉浏览器不用缓存的请求 需要根据...Cache-Control:Public之后,能够对HTTPS的资源进行缓存,参考《HTTPS的七个误解》) POST请求无法被缓存 HTTP响应头中不包含Last-Modified/Etag,也不包含
HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。...下面做一详细总结, 方便在以后的运维工作中理解和运用. 一. 浏览器中关于Cache的3属性: 1. Cache-Control: 设置相对过期时间, max-age指明以秒为单位的缓存时间....与Expires相反,时间是相对于请求的时间。max-age会覆盖掉Expires。...也就是说s-maxage只用于共享缓存,比如CDN缓存(s -> share)。与max-age 的区别是: max-age用于普通缓存,而s-maxage用于代理缓存。...Cache-Control:public, max-age=31536000 这里扩展一下: HTTP1.0 HTTP1.0中通过Pragma 控制页面缓存,通常设置的值为no- cache,不过这个值不这么保险
编者按:本文作者高峰 http://verymuch.site/,奇舞团前端工程师,W3C性能工作组成员,同时在WOT工作组学习。 前言 众所周知,在Web开发中,缓存很重要、很有用。...下文也会利用Chrome的这一特点在当前页刷新,派生资源会使用缓存进行测试。不然每次都需要打开新标签较为繁琐。 二、必知必会的缓存基础 HTTP中与缓存有关的字段主要有以下10个,如下表所示。...cache-directive为缓存指令,大小写不敏感,共有12个与HTTP缓存标准相关,如下表所示。其中请求指令7种,响应指令9种。Cache-Control可以设置多个缓存指令,以逗号,分隔。...2.3.3 max-age与Expires Cache-Control中的max-age指令用于指定缓存过期的相对时间。资源达到指定时间后过期。该功能与Expires类似。...使用Cache-Control和ETag来控制HTML中所使用的静态资源的缓存。一般是将Cache-Control的max-age设成一个比较大的值,然后用ETag进行验证。
如果没听说过浏览器缓存或者不知道浏览器缓存的用处,可以先浏览一下这篇文章->Web缓存的作用与类型 。 那么浏览器缓存机制到底是如何工作的呢?...需要注意的是,浏览器会在第一次请求完服务器后得到响应,我们可以在服务器中设置这些响应,从而达到在以后的请求中尽量减少甚至不从服务器获取资源的目的。浏览器是依靠请求和响应中的的头信息来控制缓存的。...public和 private 如果响应被标记为public,即使有关联的 HTTP 认证,甚至响应状态码无法正常缓存,响应也可以被缓存。...HTTP304,直接读取缓存。...无法被浏览器缓存的请求: HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache(HTTP1.0),或Cache-Control:max-age=0等告诉浏览器不用缓存的请求
概览 HTTP 缓存会存储与请求关联的响应,并将存储的响应复用于后续请求。 可复用性有几个优点。首先,由于不需要将请求传递到源服务器,因此客户端和缓存越近,响应速度就越快。...因此,在这种情况下,无需担心甚至无法看到响应的过时代理缓存的实现。...——因此,结合起来,语义似乎与 no-cache 相同。...然而,max-age=0 的使用是解决 HTTP/1.1 之前的许多实现无法处理 no-cache 这一指令——因此为了解决这个限制,max-age=0 被用作解决方法。...在这种情况下,使用 private 指令将导致个性化响应仅与特定客户端一起存储,而不会泄露给缓存的任何其他用户。
可以在客户端设置缓存,给缓存加上过期时间,如果期限没到就是用本地缓存的内容。然而常见的 HTTP 缓存只能存储 GET 响应,对于其他类型的响应则无能为力。...缓存头部 HTTP 相关的缓存头部一般有: Cache-Control 通用的首部,它是缓存控制字段; Expires 响应首部,代表资源过期时间; Last-Modified 响应首部,表示资源的最新修改时间...304 说明无需再次传输请求的内容,也就是说可以使用缓存的内容。 206 不完全的响应,只返回局部的信息,常用在断点续传中。...这意味着每次都会发起 HTTP 请求。设置 max-age=0 的功能与之类似。...must-revalidate 这个指令通常与 max-age 一起使用,当设定的 max-age 到期后,客户端会向服务端发起网络请求,验证缓存资源是否还有效。它像是延迟版的 no-cache。
协商缓存 浏览器第一次请求数据时,服务器会将缓存标识与数据一起返回给客户端,客户端将二者备份至缓存数据库中。...再次请求数据时,客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码(表示客户端拥有可能过期的缓存会携带Etag,时间询问服务器,服务器返回304则表示缓存有效)...在 HTTP/1.1 中,会优先处理 max-age指令,它优先级高,但是在 HTTP/1.0 中,max-age 指令会被忽略掉,就处理Expires指令。...Cache-Control 是用来控制缓存的行为,在HTTP1.1中,通过Cache-Control通用首部字段来控制缓存 Cache-Control的请求中的值 max-age:出现在请求报文中,表示缓存资源的时间小于小于该...如果no-cache后面指定头部,但是客户端后续请求与响应不包含这些头部可以直接使用缓存 max-age:出现在响应报文中,表示缓存在缓存资源服务器保存的时间 s-maxage:与max-age指令类似
简而言之,ETag 标识符是一个值,通常是一个散列,代表特定 Web 资源的版本。该资源与 ETag 值一起缓存在浏览器中,并且服务器会在确定特定的缓存资源是否已更改时使用该值。...如果服务器回复说两次请求之间的 etag 没有改变,则响应将会带有 304 代码,从而将使用缓存的资源。...与压缩的缓存资源进行交互 如果查看浏览器的网络检查器,您可能会注意到资源的 etag 哈希值附加了 -df 值。...结果收到了 304 响应,指示资源没有更改,我们应该使用本地缓存的副本。...由于我是使用内容交付网络(CDN)处理缓存的新手,因此对于测试缓存如何与任何给定资源的 etag 哈希一起工作对我来说非常有用。
HTTP缓存首部字段的优先级? HTTP缓存首部字段的特点与局限性? 用户不同的页面刷新行为的差别? 在实践中我们该用哪些报文头来控制缓存呢?...当然这种组合的方式也会有些限制,比如 no-cache 就不能和 max-age、min-fresh、max-stale 一起搭配使用。...以下对这三种访问情况进行实践与讨论。 准备工作: 为了模拟第一次访问某网站,清除相关缓存内容。为了方便讨论与对比,以下内容以腾讯课堂 的index.css文件为例。...首次访问该网页,查看请求与响应信息可以看到请求头部没有任何关于http缓存相关的信息。而返回的HTTPresponse包含了以下头部信息。...而在用户的不同刷新页面行为中,二者的结合也能很好的利用HTTP缓存控制特性,无论是在地址栏输入URI然后输入回车进行访问,还是点击刷新按钮,浏览器都能充分利用缓存内容,避免进行不必要的请求与数据传输。
2 HTTP头信息控制缓存 HTTP头信息控制缓存是通过Expires(强缓存)、Cache-control(强缓存)、Last-Modified/If-Modified-Since(协商缓存)、Etag...若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的...,但Last-Modified却改变了,导致文件没法使用缓存,有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形(无法使用缓存)。...web服务器收到请求后发现有头If-None-Match 则与被请求资源的相应校验串进行比对,决定返回200或304。...Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符,能够更加准确的控制缓存。Last-Modified与ETag一起使用时,服务器会优先验证ETag。
因此,缓存和重用以前获取的资源的能力成为优化性能很关键的一个方面。 序 本文用于解决以下六个疑问。 与缓存相关的HTTP首部字段主要有哪些? 这些HTTP首部字段之间的联系与区别?...HTTP缓存首部字段的优先级? HTTP缓存首部字段的特点与局限性? 用户不同的页面刷新行为的差别? 在实践中我们该用哪些报文头来控制缓存呢? 文中使用的1.html以及doge.png如下所示 <!...以下对这三种访问情况进行实践与讨论。 准备工作: 为了模拟第一次访问某网站,清除相关缓存内容。为了方便讨论与对比,以下内容以腾讯课堂 的index.css文件为例。...首次访问该网页,查看请求与响应信息可以看到请求头部没有任何关于http缓存相关的信息。而返回的HTTPresponse包含了以下头部信息。...而在用户的不同刷新页面行为中,二者的结合也能很好的利用HTTP缓存控制特性,无论是在地址栏输入URI然后输入回车进行访问,还是点击刷新按钮,浏览器都能充分利用缓存内容,避免进行不必要的请求与数据传输。
什么是http缓存呢,当我们使用chrome浏览器,按F12打开控制台,在网络请求中有时候看到状态码是200,有时候状态码是304,当我们去看这种请求的时候,我们会发现状态码为304的状态结果是:Status...综上总结为: 请求头last-modified的日期与响应头的last-modified一致 请求头if-none-match的hash与响应头的etag一致 这两种情况会返回Status Code:...disk cache 与内存缓存相对的,这个是将资源缓存在硬盘中。虽然相比于内存,硬盘的读取速度要慢很多,但总比没有强。硬盘缓存的控制权在后端,通过什么控制呢?...通过HTTP响应头控制,也就是我们在上面说到的catche-control和expires Expires设置的过期时间是一个绝对的GMT时间,例如:Expires:Thu,20 Jun 2019...HTTP1.1引入了Cathe-Control,它使用max-age指定组件被缓存多久,从请求开始在max-age时间内浏览器使用缓存,之外的使用请求,这样就可以消除Expires的限制, 如果对浏览器兼容性要求很高的话
领取专属 10元无门槛券
手把手带您无忧上云