no-cache:不缓存网页 no-store:不缓存网页,如果有则删除之 must-revalidate:使之前,服务器响应使用...Pragma no-cache:不缓存网页,为了兼容浏览器,有些浏览器设置些指令有效。...注:所有时间的设置都采用GMT格式,这是http协议里规定的 http时间(HTTP-date) 格式 二:PHP输出控制 A:输出不缓存 header("Expires:过去的一个时间")...no-stroe,no-cache,must-revalidate,post-check=0,pre-check=0"); header("Pragma:no-cache"); //反向代理可以不缓存网页...header("Pragma: no-cache"); //不缓存网页 B:输出永久缓存 header("Expires:未来的一个时间"); header("Last-Modified
第一次请求 请求: 复制代码 代码如下: GET /pic/201408/102.jpg HTTP/1.1 Host: www.jb51.net Connection: keep-alive Cache-Control...(Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 Referer: http...://www.jb51.net/ Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 响应: 复制代码 代码如下: HTTP...缓存是为了节省网络传输数据量,服务器端的资源没有变化时返回304且内容为空。...Last-Modified和ETag都是用于HTTP缓存,浏览器在第二次请求时会将其传回给服务器用于判断资源是否有变化。
Cache 几乎无处不在,CPU 的 L1 L2 L3 Cache、iOS 系统的 clean page 和 dirty page 机制、HTTP 的 tag 机制等等,这些背后都是 Cache 设计思想的应用...上一篇介绍了关于 HTTP 的基础知识,本篇对 HTTP Cache 做一个完整的介绍。...HTTP 头信息控制缓存 分为两种 强制缓存 协商缓存 强制缓存如果命中缓存则不需要和服务器端发生交互,而协商缓存不管是否命中都要和服务器端发生交互,强制缓存的优先级高于协商缓存。...并且 Expires 是 HTTP/1.0 的标准,现在更倾向于用 HTTP/1.1 中定义的 Cache-Control。两个字段同时存在时也是 Cache-Control 的优先级更高。...Etag/If-None-Match 由服务器端上生成的一段 hash 字符串,第一次请求时响应头带上 ETag:abcd,之后的请求中带上 If-None-Match:abcd,服务器检查 ETag,
,如果没有消息实体的话,就是与请求对应的资源的信息 P.S.关于HTTP Header的更多信息,请查看4.2 Message Headers Pragma HTTP 1.0通用头字段,指定缓存策略 Pragma...出现在响应中时,没有明确含义 P.S.关于Pragma的更多信息,请查看14.32 Pragma Expires HTTP 1.0实体头字段,表示资源的过期时间,指定过期策略 Expires = "Expires..." ":" HTTP-date 一个精确的时间点,在此之前,缓存有效。...Last-Modified 实体头字段,表示资源的最后修改时间,指定协商策略 Last-Modified = "Last-Modified" ":" HTTP-date 客户端拿到之后会保存起来,下一次向...响应头沿用缓存的那份 普通刷新 不从缓存取,一定会向服务发起请求,请求头会带上If-Modified-Since和If-None-Match等缓存头(如果有的话),此外还会擅自添上: Cache-Control
缓存 什么是缓存 缓存称为数据交换的缓存区。 当某一个硬件要读取数据时候,会首先从缓存中查找数据,如果有,直接将数据返回,如果没有再从内存中获取数据。缓存获取数据的速度远比内存快。...所以HTTP请求都采用缓存的策略,避免重复请求服务器,增加服务器压力。...表述语言:Accept-Lauguage:zh-CN,zh Expires 在HTTP1.0中开始使用,表示一种资源过期的头部,描述的绝对时间是由服务器返回。...在 HTTP/1.1 中,会优先处理 max-age指令,它优先级高,但是在 HTTP/1.0 中,max-age 指令会被忽略掉,就处理Expires指令。...Cache-Control 是用来控制缓存的行为,在HTTP1.1中,通过Cache-Control通用首部字段来控制缓存 Cache-Control的请求中的值 max-age:出现在请求报文中,表示缓存资源的时间小于小于该
HTTP 缓存分为强缓存和协商缓存....HTTP 缓存控制机制 HTML Meta 标记 HTTP-EQUIV="Pragma" CONTENT="no-cache"> // 当前页面不缓存, 每次访问都去服务器拉取....HTTP 头信息 HTTP 头信息 强缓存 (200 from cache) 判断的字段: expire 或 cache-control expire [http 1.0 的标准], 存储的是过期的具体时间...再次请求时, 请求头会带上 If-Modified-Since 去跟服务器资源的最后修改时间对比. 如果修改, 返回 200 , 否则返回 304 . ?...HTTP Cache/Disk Cache (硬盘上的缓存) Push Cache 一般资源会存入内存. 如果内存不够, 会释放一些. 首次请求 ? 走网络请求 再次请求 (F5) ?
随着用户访问量越来越大,缓存变得越来越重要。HTTP文件缓存可以减少冗余数据的传输;缓解网络瓶颈;降低对原始服务器的请求;以及降低距离延迟。...HTTP没有为用户提供一种手段来区分响应是否缓存命中的,还是访问原始服务器得到的。...文档过期 通过特殊的HTTP Cache-Control:max-age首部(HTTP/1.1)和Expires首部(HTTP/1.0+),HTTP让原始服务器向每个文档附件一个“过期日期”。...如果都提供了,HTTP/1.0和HTTP/1.1缓存都可以正确响应。...控制缓存的能力 服务器可以通过HTTP定义的几种方式来指定在文档过期之前可以将其缓存多长时间。
HTTP 缓存不是必须的,但重用缓存的资源通常是必要的。它可以减少服务器的压力,如果不使用缓存,每次发起请求都要求服务器发送相应数据,很多时候服务器发来的内容并没有发生变化,就会“浪费”服务器带宽。...可以在客户端设置缓存,给缓存加上过期时间,如果期限没到就是用本地缓存的内容。然而常见的 HTTP 缓存只能存储 GET 响应,对于其他类型的响应则无能为力。...缓存头部 HTTP 相关的缓存头部一般有: Cache-Control 通用的首部,它是缓存控制字段; Expires 响应首部,代表资源过期时间; Last-Modified 响应首部,表示资源的最新修改时间...no-cache 中如果包含 no-cache 指令,表示客户端可以缓存资源,每次使用缓存资源前都必须重新验证其有效性。这意味着每次都会发起 HTTP 请求。设置 max-age=0 的功能与之类似。...Pragma 它是 HTTP/1.0 的通用头,它用来向后兼容只支持 HTTP/1.0 协议的缓存服务器。
虽然 HTTP 缓存不是必须的,但重用缓存的资源通常是必要的,HTTP 缓存是一个 web 性能优化的重要手段。 HTTP 缓存的类型 通常 HTTP 缓存策略分为两种: 强缓存 协商缓存。...HTTP 缓存控制 在 HTTP 中,我们可以通过设置响应头以及请求头来控制缓存策略。 强缓存可以通过设置Expires和Cache-Control 两种响应头实现。...Expires Expires 响应头,它是 HTTP/1.0 的产物。代表该资源的过期时间,其值为一个绝对时间。它告诉浏览器在过期时间之前可以直接从浏览器缓存中存取数据。...浏览器再次请求服务器的时候,请求头会包含Last-Modified字段,后面跟着在缓存中获得的最后修改时间。...总结 通过前文,我们了解到 HTTP 缓存主要分: 强制缓存 协商缓存。 强制缓存由 Cache-Control,Exipres(HTTP1.0)控制。
客户端检查资源超过有效期、强缓存命中失败的情况下,则发出请求“询问”服务器是否资源真的过期了,询问的同时在请求头要携带着资源的「上次更新时间」或者「唯一实体标识」(不同http版本导致的共存问题)。...服务端核对客户端要请求的资源的「上次更新时间」或者「唯一实体标识」: 若一致,说明命中协商缓存,只返回304; 若不一致,说明资源有更新,则返回200、新资源,同时响应头返回「资源修改时间」后者「资源最新的实体标识...如果缓存的响应头信息里含有"Cache-control: must-revalidate”的定义,在浏览的过程中也会触发缓存验证。...《图解HTTP》 协商缓存 特点: 服务端校验 304 Not Modified状态码 Last-Modified Etag 304(Not Modified) 该状态码虽然是3XX的类别,但是跟301...也就是说,如果命中协商缓存,服务端响应请求时,只会返回一个304状态码、并没有实际上的文件内容,因此在响应体体积上的节省是协商缓存的优化点 HTTP/1.0 Last-Modified组 Last-Modified
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。 在本章节中我们将具体来介绍HTTP响应头信息。 应答头 说明 Allow 服务器支持哪些请求方法(如GET、POST等)。...只有当浏览器使用持久HTTP连接时才需要这个数据。...Expires 应该在什么时候认为文档已经过期,从而不再缓存它? Last-Modified 文档的最后改动时间。...因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。...注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。 Server 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
今天自己学习了一些关于前端缓存的东西,不一定有什么特别的用,仅让自己知道缓存,说不定哪天就用上了。 前端分为HTTP缓存和浏览器缓存。...HTTP缓存几乎没用过,也不知道有没有不经意间使用了,因为HTTP缓存主要是服务器代码上设置的。 HTTP第一次请求之后,服务器会在返回的头部传回缓存的参数。...然后第二次请求的时候浏览器判断这些参数是什么缓存类型,相应的返回。 HTTP缓存有强缓存和协商缓存(也有人叫对比缓存)。...说了这么多,HTTP缓存跟前端有什么关系?确实,大部分HTTP缓存是由服务器完成,关于前端怎么操作的没查到相关的文档,只知道可以通过meta标签禁用缓存和动态设置header。...缓存对于前端的性能优化算是很大的,推荐使用强缓存,然后用hash值的方法消除强缓存的影响。 如果有人知道前端怎么去操作HTTP缓存,希望可以指教一下。 (完)
HTTP 协议缓存 HTTP 协议缓存是我们本文讲解的重点,它是通过 HTTP 头信息来控制缓存的,HTTP 头信息可以让你对浏览器和代理服务器如何处理你的副本进行更多的控制。...该流程比较简单了,浏览器在第一次请求的时候不存在缓存,直接从浏览器请求,等请求返回结果之后再根据 HTTP 头信息将数据缓存在内存或者硬盘中。 浏览器再次请求时: ?...该流程就复杂多了,浏览器需要根据 HTTP 头信息来判断是否直接从缓存读取数据还是交由服务器来判断是否从缓存读取数据。 几种状态码的区别: ?...下面我们就从该流程中出现的 HTTP 状态码 200(from cache)和 304 来讲解 HTTP 协议缓存中的 HTTP 头信息。...显然,就是告诉浏览器缓存的有效期。如果过期,缓存会检查源服务器以确定文件是否改变了。 Expires 头唯一的有效值是 HTTP 时间,其他值无效,不会去缓存的。
简介 为了提高网站的访问速度和效率,我们需要设计各种各样的缓存,通过缓存可以避免不必要的额外数据传输和请求,从而提升网站的请求速度。对于HTTP协议来说,本身就自带有HTTP缓存。...HTTP中缓存响应的状态 对于HTTP缓存来说,一般缓存的是GET请求,因为GET请求除了URI之外,并没有其他多余的参数,并且其表示的意义是从服务器获取资源。...HTTP中的缓存控制 HTTP中的缓存控制是通过HTTP头来表示的。在HTTP1.1中加入了Cache-Control,我们可以通过Cache-Control来控制请求和响应的缓存情况。...当然再次校验需要服务器的支持,并需要设置”Cache-Control: must-revalidate”请求头。 那么客户端怎么去校验资源是否有效呢?...总结 到此,HTTP缓存就介绍完毕了,大家可以在实际的应用中对HTTP缓存加深理解。
一、http协议实现缓存 1....http1.0的,等于cache-control:no-cache,pragma优先级高于expires 条件头部 Last-Modified 服务器响应时将文本最后修改时间放在此头部一起传送,...cache-control与expires是一致的,但expires是http1.0的东西,现代浏览器用得很少。...,完全按钮响应的max-age来控制缓存了,firefox是按照http规范实现的。...: 创建一个缓存文件,如:main.appcache,建议文件以.appcache结尾 在web服务器上添加mine-type标识头,如:text/cache-manifest html文件引入此内容,
响应头 报文头包含若干个属性,格式为“属性名:属性值” 常见的响应头 Allow:服务器支持哪些请求方法 Content-Length:响应体的字节长度 Content-Type:响应体的MIME类型...Content-Encoding:设置数据使用的编码类型 Date:设置消息发送的日期和时间 Expire:设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间 cache-controller:...Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据,优先级高于Expires,控制粒度更细,如max-age=240,即4分钟 Location
从上面的论述中我们可以得到如下几点结论: http_referer由浏览器生成,并不是所有浏览器都会设置该值。 http_referer可以伪造,并不可信。...通过谷歌和火狐浏览器自带的调试工具,可以看到HTTP请求头信息 [chrome浏览器] [firefox浏览器] 从上图可以发现,Chrome浏览器中的请求头中的Referer地址为详细的页面地址信息,...HTTP_REFERER的用途 HTTP_REFERER提供了引导用户代理到当前页的前一页的地址信息。 常见的一些应用场景有: 统计文章来源。...而HTTP_REFERER这个变量其实也是HTTP协议中相关知识。然后又因为不同的浏览器客户端对请求头处理规则不一样,所以造成了这个问题。 也因为这个问题,补充了一个知识点,就是图片防盗链的基本原理。...参考链接: PHP $_SERVER 手册^1 HTTP_REFERER的用法及伪造^2 How reliable is HTTP_REFERER?
简介 为了提高网站的访问速度和效率,我们需要设计各种各样的缓存,通过缓存可以避免不必要的额外数据传输和请求,从而提升网站的请求速度。对于HTTP协议来说,本身就自带有HTTP缓存。...HTTP中缓存响应的状态 对于HTTP缓存来说,一般缓存的是GET请求,因为GET请求除了URI之外,并没有其他多余的参数,并且其表示的意义是从服务器获取资源。...HTTP中的缓存控制 HTTP中的缓存控制是通过HTTP头来表示的。在HTTP1.1中加入了Cache-Control,我们可以通过Cache-Control来控制请求和响应的缓存情况。...当然再次校验需要服务器的支持,并需要设置”Cache-Control: must-revalidate”请求头。 那么客户端怎么去校验资源是否有效呢?...总结 到此,HTTP缓存就介绍完毕了,大家可以在实际的应用中对HTTP缓存加深理解。 本文已收录于 http://www.flydean.com/04-http-cache/
思路: 定义一个http的状态map,存储请求的pending和complete,目的是为了解决同一个请求,在同一时间发起多次请求,为了避免发起多次同一个接口,存储status,本次request尚未【...尤其是同一时间发起多次同一个request,当一个pending时,其他均置于map回调中,当success时,以此触发每个回调 定义一个返回值map,存储每个request的结果,当下一次发起同一个请求时,去缓存里查找同时返回对应的结果...,如果未查到,则发起请求 定义请求的id,以参数、url以及请求方式当id,以此判断这次请求在缓存中是否有这个id import { singleton } from "....此方法有几处待优化: 成功回调应返回data,而不是data中的某个字段(本方法为解决每次请求接口都会请求token接口而封装,故只返回了token而已) 上文提及到,同一时间发起多次同一接口,除第一个真正发起了http...请求,其余均被推到回调cache中,问题是,如果第一次请求超时,或者报错,进而导致后续http均不会收到数据,所以该方法应该有重试功能 在这里没有考虑并发问题,应该考虑下,同时发起大量http请求的问题
根据是否需要重新向服务器发起请求来分类,将其分为强制缓存、协商缓存 2. 缓存规则信息包含在响应header中 3....强制缓存如果生效,不需要再和服务器发生交互;协商缓存不管是否生效,都需要与服务端发生交互 4....两类缓存规则可以同时存在,强制缓存优先级高于协商缓存,也就是说,当执行强制缓存的规则时,如果缓存生效,直接使用缓存,不再执行协商缓存规则 5. 浏览器是如何判断缓存数据是否失效呢?...max-age=xxx 缓存的内容将在 xxx 秒后失效 no-cache 需要使用协商缓存来验证缓存数据 no-store 所有内容都不会缓存,强制缓存、协商缓存都不会触发 2)协商缓存,服务端在进行标识比较后...总结 对于强制缓存,服务器通知浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行协商缓存策略。
领取专属 10元无门槛券
手把手带您无忧上云