威尼斯人线上娱乐

浏览器缓存调控,浏览器缓存

23 4月 , 2019  

HTTP 缓存

2016/11/01 · 基础才干 ·
HTTP,
缓存

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

威尼斯人线上娱乐 1

奇迹,HTTP 中的缓存或者会非凡令人胸口痛。
依据文书档案准确地选择 HTTP 并不是那么困难,但实际上,不一致的浏览器和 HTTP
版本平时干扰着我们。

通过 Stack Overflow
的探索结果,你能够很随意地窥见许两个人有相同的麻烦。大家友好大概不必或是未有时间去钻研全体的边缘的境况。

因而那边有一些博主总计的实用并速记的条条框框,并且在今后博主也会没完没了地跟进和翻新。

浏览器缓存调整,浏览器缓存

浏览器缓存调整

Last-Modified/ If-Modified-Since

在浏览器第②回呼吁某贰个U猎豹CS陆L时,服务器端的归来状态码200,内容是客户端请求的财富,同时有2个Last-Modified的性质标识此文件在服务器端最终被涂改的光阴。

Last-Modified格式类似那样:Last-Modified : Fri , 1二 May 200六 1八:5叁:33GMT

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

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

壹旦服务器端的能源未有变化,则自动回到 HTTP 30四(Not
Changed.)状态码,内容为空,那样就节约了传输数据量。当服务器端代码爆发退换或然重启服务器时,则重复发出财富,再次来到和第2次呼吁类似。从而确定保障不向客户端重复产生财富,也确定保障当服务器有浮动时,客户端能够获得最新的财富。

Last-Modified的问题

1、一些文本会被编辑,但内容并未有改观,今年不指望客户端认为这么些文件被更动了,而再度赚取财富。

二、有个别文件修改十一分频繁,举例在秒以下的年月内举办改造,If-Modified-Since不能够检查到。

叁、某个服务器不能够正确的获得文件的最后修改时间。

 

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

总得先与服务器确认再次回到的响应是或不是被改造,然后手艺应用该响应来满意一而再对同二个网站的恳求。因而,即使存在非凡的表达确命令牌
(ETag),no-cache
会发起往返通讯来证实缓存的响应,借使能源未被改造,能够制止下载。

no-store

有着剧情都不会被缓存到缓存或 Internet 一时文件中

must-revalidation/proxy-revalidation

设若缓存的内容失效,请求必须发送到服务器/代理以拓展重新验证

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=五 代表当访问此网页后的伍秒内不会去重新走访服务器.

在地点栏回车

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

按后退按扭

万1值为private、must-revalidate、max-age,则不会重访问,而只要为no-cache,则每一次都再一次访问.

浏览器缓存调控,浏览器缓存。按刷新按扭

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

 

Etag(Entity Tag)

服务器在检查实验缓存的零件是不是和原来服务器上的零部件相配时有三种方式:

(一)比较方今修改日期;Last-Modified/If-Modified-since

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

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

           ETag:”50b1c1d4f775c61:df3″

首先次呼吁时:

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

2.服务器管理请求,再次来到能源,包涵Http Etag和状态码200

其次次呼吁时:

一.客户端发起 HTTP GET
请求2个文本,请求中总结3个If-None-Match头,内容正是首先次呼吁时服务器再次回到的Etag的值

二.服务器判别接受到的Etag和计算出来的Etag是不是同盟。若相称,重临30四状态码,客户端继续使用本地的缓存。若不匹配,重回财富和新的ETag。

ETag带来的难点

ETag平日采用组件的少数品质来组织它,这个属性对于特定的下榻了网址服务器来讲是绝无仅有的。当浏览器从一台服务器上获取了原有组件,之后又向别的1台差别的服务器发起条件GET请求时,ETag是不会协作的。

对组件实行不供给的重新加载还会潜移默化服务器的品质并扩张带宽花费。如若您的Round罗布in
Rotation集群中有n台服务器,下二遍用户缓存中的Etag能和服务器相配的可能率是1/n。Etag还会下降代理缓存的作用,因为代理的与本身的不相称会重新下载。

HTTP响应优化

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

浏览器缓存调控Last-Modified/ If-Modified-Since
在浏览器第三次呼吁某二个U帕杰罗L时,服务器端的归来状态码200,内容…

浏览器缓存调节

浏览器缓存调整

静态能源

世代不会修改的始末:JS 和 CSS
文件,图片,和任何类型的贰进制文件都属于这几个类目。

永世,我确实说的是永世。为静态资源钦命版本号是很通用的做法。它们无论哪天改动了,它们的
U卡宴L 就改成了。

此处是一对对准静态能源的简约的条条框框:

  • 在文件也许路线中置放指纹。幸免为指纹使用查询字符串。此外,确认保障生成的U猎豹CS6L长度超过八个不等的字符。
  • 应用这么些 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

那一个设置的效力是:那么些财富能够被公开地(通过浏览器和代理服务器)缓存起来。每次在浏览器接纳这几个财富此前,浏览器依然代理服务器会检讨那些能源是还是不是有立异的版本,如若有,就把它们下载下来。

这么的装置须要留意,浏览器在重新检讨能源时效性方面有自然的百发百中。标准的是,当用户点击了「再次来到/前进」开关时,浏览器不会再次检查那个能源文件,而是平素选择缓存的版本。你若是急需更严刻的调节,供给告诉浏览器正是当用户点击了「重回/前进」开关,也亟需重新检查这几个财富文件,那么能够动用:

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

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

不是颇具的动态能源都会立马成为过时的财富。假如它们能够维持至少5分钟的时效,能够利用:

Cache-Control: public, max-age=300

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

经过那样的安装,浏览器只会在4分钟过后才重新检查。在那此前,缓存的剧情会被一向利用。要是在陆分钟后,这么些过时的内容要求严控,你能够增多
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本田UR-VL时,服务器端的回来状态码200,内容是客户端请求的财富,同时有壹个Last-Modified的属性标志此文件在服务器端最终被涂改的时光。

在浏览器第一遍呼吁某三个UXC60L时,服务器端的回来状态码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。那不是3个连连实惠的提出。ETag
在认清内容是或不是确实改变方面确实提供了一发纯粹的调节。针对生成的
ETag,暗中同意的Apache方法须求把公文的索引节(inode),大小(size)和最后修改时间作为输入求值得到。那会招致在负载均衡的条件中,生成的
ETag 值变得并非用处,因为每种服务器都会针对同1的文本生成1个见仁见智的
Etag 值。那一个或然便是绝无仅有的难点导致众多个人一起禁止使用
ETag,其实只要正确地指向一个万分的文本生成1个独一无二的 ETag
值,就从未必要禁止使用 ETag 了。

参考 Should your site be using etags or
not?

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

客户端第三回呼吁此ULANDL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是不是有被退换过:

手动按下 Ctrl-Haval

当按下 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: …

小心那并不只是和原服务器建立连接,其同样适用于代理服务器。本质上,它只是重新检核实实内容。假诺服务器回应了三个30四,浏览器将会利用缓存的内容。

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
压缩,那么在如此的情景下将会得到不正确的数码(也等于,压缩过的数码)。那将会使代理服务器缓存四个版本的能源:贰个是减弱过的,五个是没压缩过的。准确版本的能源将要请求头发送之后进行传输。

还有1个有血有肉的原故:IE 浏览器不缓存任何带有 Vary 头但值不为
Accept-EncodingUser-Agent
的能源。所以通过那种办法丰盛那个头,技能担保这一个财富在 IE 下被缓存。

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

即使服务器端的能源未有生成,则自动回到 30肆(Not
Changed.)状态码,内容为空,那样就节约了传输数据量。

若果服务器端的能源未有成形,则自动回到 30四(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不恐怕检查到。

2、有些文件修改十二分频仍,比方在秒以下的岁月内开始展览更动,If-Modified-Since不能检查到。

3、某个服务器不可能纯粹的收获文件的最终修改时间。

3、有个别服务器不能够确切的得到文件的末尾修改时间。

 

 

Expires(Freshness)

Expires(Freshness)

Expires用来支配缓存失效的日子。当浏览器看到响应中有八个Expires头时,它会和对应的组件一同保存到其缓存中,只要组件未有过期,浏览器就会动用缓存版本而不会张开此外的HTTP请求。永久的Expires头适用于图片等不常常更新的能源。Expires设置的日期格式必须为威他霉素T(格林尼治标准时间)。Expires既适用于
HTTP一.0,也适用于 HTTP一.一。

Expires用来调节缓存失效的日子。当浏览器看到响应中有三个Expires头时,它会和相应的零部件一同保存到其缓存中,只要组件未有过期,浏览器就会选拔缓存版本而不会实行别的的HTTP请求。永远的Expires头适用于图片等不平日更新的财富。Expires设置的日期格式必须为土霉素T(格林尼治标准时间)。Expires既适用于
HTTP1.0,也适用于 HTTP一.1。

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头使用的是一个特定的时间,必要客户端和劳动器端的石英表严厉同步。假使服务器和客户端的时日不统1,这有比不小恐怕出现缓存提前失效的场馆,存在不牢固性。其次,要是Expires的日期到来,需求在服务器配置中再提供1个新的日子。

 

 

Cache-Control(Freshness)

Cache-Control(Freshness)

HTTP1.一引进了Cache-Control头来击溃Expires头的不足。Cache-Control使用max-age制定组件被缓存多长期,以秒为单位。比方

HTTP壹.1引进了Cache-Control头来克制Expires头的不足。Cache-Control使用max-age制定组件被缓存多长期,以秒为单位。比方

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

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

若果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=伍 代表当访问此网页后的五秒内不会去重新做客服务器.

若果内定cache-control的值为private、no-cache、must-revalidate,那么展开新窗口访问时都会重复访问服务器。而1旦钦点了max-age值,那么在此值内的小运里就不会另行访问服务器,举个例子:Cache-control:
max-age=5 表示当访问此网页后的伍秒内不会去重新走访服务器.

在地方栏回车

在地点栏回车

借使值为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 请求3个财富;

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

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

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

其次次呼吁时:

其次次呼吁时:

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

一.客户端发起 HTTP GET
请求三个文件,请求中蕴涵三个If-None-Match头,内容就是率先次呼吁时服务器再次来到的Etag的值

二.服务器剖断接受到的Etag和总结出来的Etag是不是相称。若相配,重临304状态码,客户端继续应用本地的缓存。若不相称,再次回到财富和新的ETag。

二.服务器判定接受到的Etag和计算出来的Etag是还是不是合营。若相配,重返30四状态码,客户端继续使用本地的缓存。若不相配,重临能源和新的ETag。

ETag带来的难题

ETag带来的标题

ETag平常采用组件的一点品质来布局它,这么些属性对于特定的住宿了网址服务器来讲是绝无仅有的。当浏览器从壹台服务器上得到了本来面目组件,之后又向其它1台不一样的服务器发起条件GET请求时,ETag是不会协作的。

ETag平日使用组件的少数品质来组织它,那一个属性对于特定的下榻了网址服务器来讲是绝无仅有的。当浏览器从一台服务器上获得了原本组件,之后又向其它一台分化的服务器发起条件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地图