浏览器缓存调节

HTTP 缓存

2016/11/01 · 基本功才具 ·
HTTP,
缓存

原作出处:
坑坑洼洼实验室   

亚洲必赢官网 1

有时,HTTP 中的缓存只怕会卓绝令人头痛。
安分守己文书档案精确地动用 HTTP 并不是那么难堪,但事实上,差别的浏览器和 HTTP
版本平日干扰着大家。

通过 Stack Overflow
的搜索结果,你能够很随便地发掘众两个人有一致的干扰。咱们协调或许不必或是未有时间去钻研全数的边缘的景况。

就此那里有一部分博主总括的实用并速记的平整,并且在今后博主也会频频地跟进和更新。

浏览器缓存调节,浏览器缓存

浏览器缓存调控

Last-Modified/ If-Modified-Since

在浏览器第3遍呼吁某3个UHighlanderL时,服务器端的回来状态码200,内容是客户端请求的能源,同时有1个Last-Modified的属性标志此文件在劳动器端最终被更换的时刻。

Last-Modified格式类似那样:Last-Modified : Fri , 1二 May 2006 1八:5叁:3叁金霉素T

客户端第3次呼吁此U奥迪Q7L时,依据HTTP协议的鲜明,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是不是有被涂改过:

If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT

假定服务器端的能源未有变动,则自动再次回到 HTTP 30四(Not
Changed.)状态码,内容为空,那样就节省了传输数据量。当服务器端代码发生改造恐怕重启服务器时,则再一次发出财富,再次来到和第叁次呼吁类似。从而保险不向客户端重复产生产资料源,也准保当服务器有调换时,客户端能够拿走最新的财富。

Last-Modified的问题

一、一些文书会被编辑,但剧情从未改观,那一年不希望客户端感到那些文件被修改了,而重复赢得财富。

二、有个别文件修改11分频仍,比如在秒以下的年华内实行退换,If-Modified-Since不可能检查到。

3、有些服务器不可能正确的获得文件的末梢修改时间。

 

Expires

Expires用来调节缓存失效的日子。当浏览器看到响应中有三个Expires头时,它会和呼应的零部件一齐保存到其缓存中,只要组件未有过期,浏览器就会动用缓存版本而不会进行别的的HTTP请求。永恒的Expires头适用于图片等不寻常更新的能源。Expires设置的日期格式必须为罗红霉素T(格林尼治规范时间)。

Expires:Wed, 11 Jan 2017 08:10:26 GMT

Expires的不足:

率先,Expires头使用的是一个特定的岁月,要求客户端和服务器端的石英钟严谨同步。假诺服务器和客户端的小时不合并,这有相当大或者出现缓存提前失效的图景,存在不稳固性。其次,要是Expires的日子到来,要求在服务器配置中再提供二个新的日期。

 

Cache-Control

HTTP壹.一引进了Cache-Control头来制伏Expires头的欠缺。Cache-Control使用max-age制定组件被缓存多长期,以秒为单位。比如

Cache-Control:max-age=3600意味组件将被缓存60分钟。

借使max-age和Expires同时出现,则max-age有更加高的预先级,浏览器会依据max-age的小运来确认缓存过期时刻。

常用 cache-directive 值

Cache-directive

说明

public

具备剧情都将被缓存(客户端和代理服务器都可缓存)

private

内容只缓存到个人缓存中(仅客户端能够缓存,代理服务器不可缓存),暗中同意值

no-cache

总得先与服务器确认重回的响应是还是不是被改换,然后才能应用该响应来满意三番五次对同1个网站的央浼。因而,假若存在妥善的证实令牌
(ETag),no-cache
会发起往返通讯来验证缓存的响应,尽管财富未被改造,可防止止下载。

no-store

装有内容都不会被缓存到缓存或 Internet 临时文件中

must-revalidation/proxy-revalidation

万1缓存的内容失效,请求必须发送到服务器/代理以开始展览双重验证

max-age=xxx (xxx is numeric)

缓存的内容将要 xxx 秒后失效, 这么些选项只在HTTP
1.1可用
。如若和Last-Modified一同使用时, 优先级较高

 

浏览器的分裂操作

开采新窗口

如果内定cache-control的值为private、no-cache、must-revalidate,那么展开新窗口访问时都会再也访问服务器。而一旦内定了max-age值,那么在此值内的光阴里就不会另行访问服务器,比方:Cache-control:
max-age=5 表示当访问此网页后的5秒内不会去重新走访服务器.

在地点栏回车

假如值为private或must-revalidate,则只有首先次访问时会访问服务器,现在就不再访问。假若值为no-cache,那么每一回都会访问。假设值为max-age,则在逾期以前不会重新访问。

按后退按扭

若果值为private、must-revalidate、max-age,则不会重访问,而假若为no-cache,则每一趟都再一次访问.

浏览器缓存调节。按刷新按扭

无论是为何值,都会重新访问.

 

Etag(Entity Tag)

服务器在检查测试缓存的零部件是还是不是和原始服务器上的机件相配时有二种方法:

(1)相比目前涂改日期;Last-Modified/If-Modified-since

(一)比较实体标签;Etag/If-None-Match(优先级比If-Modified-since高)

实业标签,是web服务器和浏览器用于确认缓存组件的有效性的一种机制。

           ETag:”50b1c1d4f775c61:df3″

率先次呼吁时:

一.客户端发起HTTP GET 请求二个财富;

二.服务器管理请求,重临财富,包罗Http Etag和状态码200

第一次呼吁时:

一.客户端发起 HTTP GET
请求三个文件,请求中包罗多少个If-None-Match头,内容正是率先次呼吁时服务器再次回到的Etag的值

贰.服务器剖断接受到的Etag和计算出来的Etag是或不是合营。若匹配,重临30肆状态码,客户端继续接纳当地的缓存。若不匹配,重返能源和新的ETag。

ETag带来的主题材料

ETag平常接纳组件的少数品质来协会它,那个属性对于特定的下榻了网址服务器来讲是唯壹的。当浏览器从一台服务器上获得了原始组件,之后又向其余一台差异的服务器发起条件GET请求时,ETag是不会同盟的。

对组件进行不供给的双重加载还会影响服务器的性质并增加带宽成本。纵然您的Round罗布in
Rotation集群中有n台服务器,下壹次用户缓存中的Etag能和服务器相称的概率是1/n。Etag还会回落代理缓存的效用,因为代理的与本身的不相配会重新下载。

HTTP响应优化

移除ETag,Expires,使用Cache-Control调控地点缓存。

浏览器缓存调节Last-Modified/ If-Modified-Since
在浏览器第贰遍呼吁某二个UHummerH二L时,服务器端的回到状态码200,内容…

浏览器缓存调节

浏览器缓存调整

静态财富

世代不会修改的始末:JS 和 CSS
文件,图片,和其他类型的二进制文件都属于这一个类目。

千古,小编实在说的是永久。为静态财富内定版本号是很通用的做法。它们无论怎么着时候改换了,它们的
U卡宴L 就退换了。

这里是局地针对静态能源的简要的平整:

  • 在文书或然路线中放到指纹。制止为指纹使用查询字符串。别的,确认保证生成的UMuranoL长度抢先8个分歧的字符。
  • 运用那一个 HTTP 头:
Cache-Control: public, max-age=31536000 Expires: (一年后的今天)
ETag: (基于内容生成) Last-Modified: (过去某个时间) Vary:
Accept-Encoding

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f6a212f047787520650-1">
1
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f6a212f047787520650-2">
2
</div>
<div class="crayon-num" data-line="crayon-5b8f6a212f047787520650-3">
3
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f6a212f047787520650-4">
4
</div>
<div class="crayon-num" data-line="crayon-5b8f6a212f047787520650-5">
5
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f6a212f047787520650-1" class="crayon-line">
Cache-Control: public, max-age=31536000
</div>
<div id="crayon-5b8f6a212f047787520650-2" class="crayon-line crayon-striped-line">
Expires: (一年后的今天)
</div>
<div id="crayon-5b8f6a212f047787520650-3" class="crayon-line">
ETag: (基于内容生成)
</div>
<div id="crayon-5b8f6a212f047787520650-4" class="crayon-line crayon-striped-line">
Last-Modified: (过去某个时间)
</div>
<div id="crayon-5b8f6a212f047787520650-5" class="crayon-line">
Vary: Accept-Encoding
</div>
</div></td>
</tr>
</tbody>
</table>

针对静态能源的设置便是那么粗略。

Last-Modified/ If-Modified-Since(Validation)

Last-Modified/ If-Modified-Since(Validation)

动态能源

针对应用程序私密性和新鲜度方面须要的两样,大家应当选用差异的缓存调整装置。

对此非私密性和平时性变动的财富(想像一下期货(Futures)音讯),大家应当使用上面这个:

Cache-Control: public, max-age=0 Expires: (当前岁月) ETag:
(基于内容更动) Last-Modified: (过去有些时间) Vary: Accept-Encoding

1
2
3
4
5
Cache-Control: public, max-age=0
Expires: (当前时间)
ETag: (基于内容生成)
Last-Modified: (过去某个时间)
Vary: Accept-Encoding

那个设置的效应是:这几个财富能够被公开地(通过浏览器和代理服务器)缓存起来。每3次在浏览器选择这个能源从前,浏览器依旧代理服务器会检讨那么些财富是或不是有革新的本子,要是有,就把它们下载下来。

诸如此类的装置必要小心,浏览器在重复检查能源时效性方面有必然的狡滑。规范的是,当用户点击了「重回/前进」按键时,浏览器不会重新检讨那一个能源文件,而是直接运用缓存的本子。你即使须求更严俊的垄断(monopoly),要求报告浏览器正是当用户点击了「再次来到/前进」按键,也必要再一次检讨这几个财富文件,那么能够选取:

Cache-Control: public, no-cache, no-store

1
Cache-Control: public, no-cache, no-store

不是富有的动态能源都会立刻成为过时的财富。若是它们得以维持至少6分钟的时效,能够动用:

Cache-Control: public, max-age=300

1
Cache-Control: public, max-age=300

透过那样的安装,浏览器只会在四分钟之后才再一次检查。在那在此以前,缓存的始末会被直接选拔。若是在四分钟后,那一个过时的内容供给严控,你能够增加
must-revalidate 字段:

Cache-Control: public, max-age=300, must-revalidate

1
Cache-Control: public, max-age=300, must-revalidate

对此私密恐怕针对用户的始末,须要把 public 替换为 private
以防止内容被代理缓存。

Cache-Control: private, …

1
Cache-Control: private, …

在浏览器第一回呼吁某二个U奥迪Q7L时,服务器端的回到状态码200,内容是客户端请求的财富,同时有2个Last-Modified的品质标志此文件在服务器端最后被涂改的光阴。

在浏览器第三次呼吁某贰个U奇骏L时,服务器端的回来状态码200,内容是客户端请求的能源,同时有二个Last-Modified的习性标识此文件在劳动器端最终被修改的时间。

Cache-Control 和 Expires

当同时利用 Cache-ControlExpires 时,Cache-Control 获得优先权。

并且使用 Cache-ControlExpires
意味着获得更加宽泛的支撑(被不一样的浏览器和版本)。当然,它们三个应该被布置成同样的时效值,避防止引起疑心。

参考 Expires: vs. Cache-Control:
max-age

亚洲必赢官网 2

亚洲必赢官网 3

ETag 和 Last-Modified

那多个头在浏览器对能源做重新检查认证的时候会选拔到。差不离来说,浏览器只是不足为训地囤积那七个来自于服务器的头的值,然后在急需检讨验证的时候,浏览器依照请求条件,把那五个指发送给服务器(分别通过
If-None-MatchIf-Modified-Since)。

小心只有在财富过期的图景下,检核准明才会生出。

在有标准的请求下,If-None-MatchIf-Modified-Since
头的出现取决于服务器。不过,由于是服务器生成的 ETag 和(或)
Last-Modified,所以实际,那未尝什么大难题。大大多的浏览器在恐怕的场馆下都会把着双边都发送给服务器。

参考 What takes precedence: the ETag or Last-Modified HTTP
header?

1个普通的提出是:防止使用 ETag。那不是一个接连实惠的建议。ETag
在认清内容是或不是真的更动方面确实提供了更为标准的主宰。针对生成的
ETag,暗许的Apache方法供给把文件的索引节(inode),大小(size)和最终修改时间作为输入求值获得。这会促成在负载均衡的境遇中,生成的
ETag 值变得毫无用处,因为各种服务器都会指向同一的公文生成一个不如的
Etag 值。这几个恐怕就是唯一的标题变成数不尽人统统禁用
ETag,其实假诺正确地对准八个卓绝的文本生成一个整个世界无双的 ETag
值,就不曾须求禁止使用 ETag 了。

参考 Should your site be using etags or
not?

客户端第壹次呼吁此UCR-VL时,依据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间今后文件是还是不是有被修改过:

客户端第3遍呼吁此U奥迪Q三L时,依照HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间过后文件是不是有被涂改过:

手动按下 Ctrl-本田UR-V

当按下 Ctrl-R 时,浏览器会携水肿边包车型大巴伸手,以检讨是或不是须要更新缓存内容:

Cache-Control: max-age=0 If-None-Match: … If-Modifed-Since: …

1
2
3
Cache-Control: max-age=0
If-None-Match: …
If-Modifed-Since: …

专注那并不只是和原服务器建立连接,其同样适用于代理服务器。本质上,它只是重新检讨注明内容。若是服务器回应了一个304,浏览器将会选取缓存的始末。

If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT

If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT

Vary: Accept-Encoding

那几个头对于部分人来说或然比较素不相识。

当三个能源启用了 gzip 压缩,并且被代理服务器缓存,客户端若是不支持 gzip
压缩,那么在这么的动静下将会获取不科学的多少(也正是,压缩过的多寡)。那将会使代理服务器缓存八个本子的财富:贰个是缩减过的,2个是没压缩过的。精确版本的能源就要请求头发送之后进行传输。

还有1个现实的缘由:IE 浏览器不缓存任何带有 Vary 头但值不为
Accept-EncodingUser-Agent
的财富。所以经过这种艺术丰盛这一个头,技巧担保那么些财富在 IE 下被缓存。

本文译自 Bryan Tsai 的 《Http
Caching》。

设若服务器端的财富没有变化,则自动再次回到 30四(Not
Changed.)状态码,内容为空,那样就节省了传输数据量。

即便服务器端的能源未有变化,则自动重返 304(Not
Changed.)状态码,内容为空,那样就节省了传输数据量。

参考资料

  • Increasing Application Performance with HTTP Cache
    Headers
  • Things Caches Do
  • Google Developers: HTTP
    Caching
  • Google Developers: Optimize
    Caching
  • Caching Tutorial for Web Authors and
    Webmasters
  • Cache Control Directives
    Demystified
  • What are the hard and fast rules for Cache
    Control?
  • What’s the difference between Cache-Control: max-age=0 and
    no-cache?
  • HTTP Cache Control max-age,
    must-revalidate
  • Difference between no-cache and
    must-revalidate
  • Caching Improvements in Internet Explorer
    9

    2 赞 6 收藏
    评论

亚洲必赢官网 4

亚洲必赢官网 5

亚洲必赢官网 6

当服务器端代码发生转移仍然重启服务器时,则另行发出能源,再次来到和率先次呼吁类似。从而确认保证不向客户端重复发生产资料源,也保障当服务器有变化时,客户端能够赚取最新的财富。

当服务器端代码产生退换照旧重启服务器时,则再度发出能源,重返和率先次呼吁类似。从而保险不向客户端重复产生财富,也保险当服务器有转移时,客户端能够获得最新的财富。

Last-Modified的问题

Last-Modified的问题

壹、一些文本会被编辑,但剧情从未改观,那年不指望客户端认为那一个文件被涂改了,而重复赢得财富。

壹、一些文件会被编辑,但剧情未有改动,这年不期待客户端感到那个文件被涂改了,而再一次获得财富。

二、某个文件修改1贰分频仍,比如在秒以下的流年内开始展览修改,If-Modified-Since不可能检查到。

二、某个文件修改十二分频繁,举个例子在秒以下的年华内开始展览改动,If-Modified-Since不也许检查到。

3、有个别服务器不可能可信的拿走文件的终极修改时间。

3、某个服务器不能够标准的获取文件的末梢修改时间。

 

 

Expires(Freshness)

Expires(Freshness)

Expires用来决定缓存失效的日期。当浏览器看到响应中有3个Expires头时,它会和呼应的零部件一齐保存到其缓存中,只要组件未有过期,浏览器就会利用缓存版本而不会进行别的的HTTP请求。永远的Expires头适用于图片等不日常更新的能源。Expires设置的日子格式必须为创新霉素T(格林尼治标准时间)。Expires既适用于
HTTP一.0,也适用于 HTTP一.一。

Expires用来决定缓存失效的日期。当浏览器看到响应中有一个Expires头时,它会和呼应的零件一同保存到其缓存中,只要组件未有过期,浏览器就会使用缓存版本而不会议及展览开其余的HTTP请求。长久的Expires头适用于图片等不平时更新的财富。Expires设置的日子格式必须为红霉素T(格林尼治规范时间)。Expires既适用于
HTTP1.0,也适用于 HTTP一.壹。

Expires:Wed, 11 Jan 2017 08:10:26 GMT

Expires:Wed, 11 Jan 2017 08:10:26 GMT

因为请求根本未有发生,所以在chrome下请求尾部会彰显:Provisional
headers are shown。
情状码为 200 OK (from cache)

因为请求根本未曾产生,所以在chrome下请求底部会展现:Provisional
headers are shown。
意况码为 200 OK (from cache)

Expires的不足:

Expires的不足:

先是,Expires头使用的是二个一定的时间,需要客户端和劳动器端的机械钟严俊同步。假使服务器和客户端的时刻不统壹,那有相当的大希望出现缓存提前失效的情景,存在不牢固性。其次,若是Expires的日子到来,需求在服务器配置中再提供一个新的日期。

第叁,Expires头使用的是二个一定的时间,须求客户端和劳务器端的机械钟严厉同步。假若服务器和客户端的时日不统壹,那有非常的大可能率出现缓存提前失效的状态,存在不牢固性。其次,倘使Expires的日子到来,供给在服务器配置中再提供2个新的日期。

 

 

Cache-Control(Freshness)

Cache-Control(Freshness)

HTTP壹.一引入了Cache-Control头来克制Expires头的欠缺。Cache-Control使用max-age制定组件被缓存多长时间,以秒为单位。举个例子

HTTP一.一引入了Cache-Control头来制服Expires头的欠缺。Cache-Control使用max-age制定组件被缓存多长期,以秒为单位。举个例子

Cache-Control:max-age=3600意味组件将被缓存60分钟。

Cache-Control:max-age=3600代表组件将被缓存五十四分钟。

假使max-age和Expires同时出现,则max-age有越来越高的先行级,浏览器会基于max-age的时刻来承认缓存过期光阴。若缓存新鲜,则不发送请求直接使用缓存。

若是max-age和Expires同时出现,则max-age有越来越高的先行级,浏览器会凭仗max-age的时间来认同缓存过期时刻。若缓存新鲜,则不发送请求直接行使缓存。

常用 cache-directive 值

常用 cache-directive 值

Cache-directive

Cache-directive

说明

说明

public

public

具有内容都将被缓存(客户端和代理服务器都可缓存)

有着故事情节都将被缓存(客户端和代理服务器都可缓存)

private

private

内容只缓存到个人缓存中(仅客户端能够缓存,代理服务器不可缓存),默许值

内容只缓存到村办缓存中(仅客户端能够缓存,代理服务器不可缓存),默许值

no-cache

no-cache

do-not-serve-from-cache-without-revalidation:能够被缓存,不过在与服务器举行验证此前不可能供客户端使用。假诺存在杰出的证实令牌
(ETag),no-cache
会发起往返通讯来验证缓存,借使财富未被改成,能够一向利用。

do-not-serve-from-cache-without-revalidation:能够被缓存,然则在与服务器实行验证在此以前不可能供客户端使用。固然存在相当的证实令牌
(ETag),no-cache
会发起往返通信来验证缓存,要是能源未被转移,能够一向运用。

no-store

no-store

装有剧情都不会被缓存到缓存或 Internet 权且文件中

具有内容都不会被缓存到缓存或 Internet 目前文件中

must-revalidation/proxy-revalidation

must-revalidation/proxy-revalidation

若果缓存的始末失效,请求必须发送到服务器/代理以举行双重验证

假若缓存的始末失效,请求必须发送到服务器/代理以进行重复验证

max-age=xxx (xxx is numeric)

max-age=xxx (xxx is numeric)

缓存内容的管用时间长短,将要 xxx 秒后失效, 这些选项只在HTTP
1.1可用
。如若和Last-Modified并存时,
优先级更加高。值为0时每一次都从服务器获取能源。

缓存内容的可行时间长短,将在 xxx 秒后失效, 那些选项只在HTTP
1.1可用
。若是和Last-Modified并存时,
优先级越来越高。值为0时每趟都从服务器获取能源。

 

 

浏览器的例外操作

浏览器的两样操作

开采新窗口

开发新窗口

假使钦赐cache-control的值为private、no-cache、must-revalidate,那么张开新窗口访问时都会重新访问服务器。而若是钦赐了max-age值,那么在此值内的光阴里就不会再也访问服务器,举个例子:Cache-control:
max-age=伍 代表当访问此网页后的5秒内不会去重新访问服务器.

举例钦点cache-control的值为private、no-cache、must-revalidate,那么展开新窗口访问时都会再度访问服务器。而只要钦定了max-age值,那么在此值内的日子里就不会重复访问服务器,举例:Cache-control:
max-age=五 表示当访问此网页后的伍秒内不会去重新做客服务器.

在地方栏回车

在地方栏回车

假定值为private或must-revalidate,则唯有首先次访问时会访问服务器,未来就不再访问。如若值为no-cache,那么每便都会造访。如若值为max-age,则在逾期在此之前不会再也访问。

若果值为private或must-revalidate,则惟有首先次访问时会访问服务器,今后就不再访问。就算值为no-cache,那么每一遍都会造访。纵然值为max-age,则在逾期事先不会再次访问。

按后退按扭

按后退按扭

设若值为private、must-revalidate、max-age,则不会重访问,而只要为no-cache,则每便都重复访问.

假定值为private、must-revalidate、max-age,则不会重访问,而假设为no-cache,则每一回都重复访问.

按刷新按扭

按刷新按扭

不论为啥值,都会再一次访问.

不管为啥值,都会重新访问.

 

 

Etag(Entity Tag)(Validation)

Etag(Entity Tag)(Validation)

服务器在检查评定缓存的零部件是或不是和原始服务器上的机件相配时有三种方法:

服务器在检查评定缓存的零部件是或不是和原有服务器上的机件相配时有三种方法:

(一)相比近日涂改日期;Last-Modified/If-Modified-since

(壹)比较目前涂改日期;Last-Modified/If-Modified-since

亚洲必赢官网,(一)比较实体标签;Etag/If-None-Match(优先级比If-Modified-since高)

(一)比较实体标签;Etag/If-None-Match(优先级比If-Modified-since高)

实业标签,是web服务器和浏览器用于确认缓存组件的卓有成效的一种机制。

实业标签,是web服务器和浏览器用于确认缓存组件的有用的1种机制。

           ETag:”50b1c1d4f775c61:df3″

           ETag:”50b1c1d4f775c61:df3″

先是次呼吁时:

首先次呼吁时:

一.客户端发起HTTP GET 请求多个财富;

一.客户端发起HTTP GET 请求一个能源;

贰.服务器处理请求,再次回到能源,包含Http Etag和状态码200

二.服务器管理请求,重返能源,包括Http Etag和状态码200

其次次呼吁时:

第3次呼吁时:

一.客户端发起 HTTP GET
请求三个文书,请求中包含3个If-None-Match头,内容正是第三回呼吁时服务器重返的Etag的值

1.客户端发起 HTTP GET
请求二个文件,请求中包蕴3个If-None-Match头,内容正是率先次呼吁时服务器再次回到的Etag的值

二.服务器判别接受到的Etag和总括出来的Etag是还是不是合营。若匹配,再次来到30肆状态码,客户端继续利用本地的缓存。若不包容,再次回到财富和新的ETag。

二.服务器推断接受到的Etag和总结出来的Etag是不是相称。若匹配,重临30四状态码,客户端继续利用本地的缓存。若不协作,再次来到能源和新的ETag。

ETag带来的主题材料

ETag带来的标题

ETag平常采用组件的一些品质来布局它,这一个属性对于特定的留宿了网址服务器来讲是唯1的。当浏览器从1台服务器上收获了本来组件,之后又向其它一台差异的服务器发起条件GET请求时,ETag是不会协作的。

ETag常常采取组件的一点品质来布局它,那么些属性对于特定的留宿了网址服务器来讲是绝无仅有的。当浏览器从1台服务器上赢得了原始组件,之后又向此外一台差别的服务器发起条件GET请求时,ETag是不会合营的。

对组件举办不需求的再一次加载还会影响服务器的性质并追加带宽费用。假使您的Round罗布in
Rotation集群中有n台服务器,下叁次用户缓存中的Etag能和服务器相配的概率是1/n。Etag还会回落代理缓存的频率,因为代理的与本人的不相称会重新下载。

对组件举办不须求的再度加载还会影响服务器的脾气并扩展带宽开支。假诺您的Round罗布in
Rotation集群中有n台服务器,下一回用户缓存中的Etag能和服务器相配的票房价值是1/n。Etag还会稳中有降代理缓存的成效,因为代理的与自己的不相称会重新下载。

HTTP响应优化

HTTP响应优化

现阶段的Web服务器绝大诸多都利用HTTP/一.1行业内部,所以移除ETag和Expires,选取Cache-Control调整地方缓存

当下的Web服务器绝大繁多都利用HTTP/1.一规范,所以移除ETag和Expires,行使Cache-Control调节地点缓存

post请求无法缓存。

post请求无法缓存。

网站地图xml地图