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

HTTP 缓存

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

初稿出处:
坑坑洼洼实验室   

美高梅开户网址 1

神迹,HTTP 中的缓存大概会十二分令人喉咙疼。
服从文档正确地使用 HTTP 并不是那么困难,但实则,不一致的浏览器和 HTTP
版本平时干扰着大家。

通过 Stack Overflow
的索求结果,你可以很随意地窥见大多个人有同等的困扰。大家自身也许不必或是没有时间去钻研全体的边缘的景色。

之所以那里有局地博主总结的实用并速记的规则,并且在今后博主也会没完没了地跟进和革新。

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

浏览器缓存调整

Last-Modified/ If-Modified-Since

美高梅开户网址 ,在浏览器第2回呼吁某叁个U福特ExplorerL时,服务器端的归来状态码200,内容是客户端请求的能源,同时有三个Last-Modified的性格标识此文件在劳务器端最终被涂改的小时。

Last-Modified格式类似那样:Last-Modified : Fri , 1二 May 200陆 18:53:3三GMT

客户端第1次呼吁此U库罗德L时,依照HTTP协议的明确,浏览器会向服务器传送If-Modified-Since报头,询问该时间今后文件是或不是有被改变过:

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

假诺服务器端的能源未有变动,则自动再次回到 HTTP 304(Not
Changed.)状态码,内容为空,这样就省去了传输数据量。当服务器端代码产生变动大概重启服务器时,则另行发出能源,重回和首回呼吁类似。从而保障不向客户端重复爆发产资料源,也有限支持当服务器有浮动时,客户端能够收获最新的财富。

Last-Modified的问题

一、一些文件会被编辑,但剧情未有改造,这年不希望客户端感觉那个文件被涂改了,而再一次获得财富。

浏览器缓存调控,浏览器缓存。2、有些文件修改十三分频仍,比方在秒以下的日子内开始展览修改,If-Modified-Since不可能检查到。

叁、某个服务器不能确切的得到文件的结尾修改时间。

 

Expires

Expires用来支配缓存失效的日子。当浏览器看到响应中有多个Expires头时,它会和对应的机件一齐保存到其缓存中,只要组件未有过期,浏览器就会采取缓存版本而不会进展别的的HTTP请求。长久的Expires头适用于图片等不通常更新的能源。Expires设置的日子格式必须为GMT(格林尼治标准时间)。

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

Expires的不足:

先是,Expires头使用的是贰个一定的年华,须要客户端和劳动器端的石英钟严酷同步。假诺服务器和客户端的年月不统一,那有不小希望出现缓存提前失效的动静,存在不稳定性。其次,假设Expires的日子到来,必要在服务器配置中再提供1个新的日期。

 

Cache-Control

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

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

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

在地方栏回车

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

按后退按扭

倘诺值为private、must-revalidate、max-age,则不会重访问,而只要为no-cache,则每一遍都重新访问.

按刷新按扭

甭管为啥值,都会再一次访问.

 

Etag(Entity Tag)

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

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

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

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

           ETag:”50b1c1d4f775c61:df3″

首先次呼吁时:

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

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

其次次呼吁时:

壹.客户端发起 HTTP GET
请求多个文件,请求中回顾八个If-None-Match头,内容正是率先次呼吁时服务器重回的Etag的值

2.服务器决断接受到的Etag和总结出来的Etag是不是合营。若匹配,重返304状态码,客户端继续使用本地的缓存。若不协作,重返财富和新的ETag。

ETag带来的标题

ETag平时选用组件的一些质量来组织它,这一个属性对于特定的夜宿了网址服务器来讲是绝无仅有的。当浏览器从一台服务器上获得了原有组件,之后又向别的壹台不相同的服务器发起条件GET请求时,ETag是不会协作的。

对组件进行不须求的双重加载还会潜移默化服务器的品质并追加带宽费用。借使你的Round罗布in
Rotation集群中有n台服务器,下一回用户缓存中的Etag能和服务器相配的票房价值是1/n。Etag还会下降代理缓存的功效,因为代理的与自己的不匹配会重新下载。

HTTP响应优化

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

浏览器缓存控制Last-Modified/ If-Modified-Since
在浏览器第二遍呼吁某3个ULANDL时,服务器端的回到状态码200,内容…

浏览器缓存调节

浏览器缓存调控

静态能源

千古不会修改的剧情:JS 和 CSS
文件,图片,和其余类型的二进制文件都属于那几个类目。

永恒,我的确说的是长久。为静态财富内定版本号是很通用的做法。它们无论什么样时候改换了,它们的
ULX570L 就改成了。

那边是有的针对性静态财富的简短的条条框框:

  • 在文书也许路线中放置指纹。防止为指纹使用查询字符串。别的,确认保证生成的UENVISIONL长度超越7个不等的字符。
  • 利用这么些 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)

动态能源

针对应用程序私密性和新鲜度方面要求的不如,大家理应利用不相同的缓存调控装置。

对此非私密性和平常性别变化动的能源(想像一下股票音信),大家理应运用下边那么些:

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次在浏览器接纳这个财富从前,浏览器依然代理服务器会检查那些财富是还是不是有更新的版本,倘诺有,就把它们下载下来。

这么的装置必要专注,浏览器在再次检讨能源时效性方面有早晚的油滑。标准的是,当用户点击了「重回/前进」开关时,浏览器不会再也检讨那一个财富文件,而是平素动用缓存的本子。你倘诺需求更严酷的操纵,必要报告浏览器便是当用户点击了「重返/前进」开关,也急需再行检讨这一个能源文件,那么可以接纳:

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

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

不是持有的动态能源都会立即成为过时的财富。要是它们得以保持至少4分钟的时效,能够利用:

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, …

在浏览器第二遍呼吁某3个U宝马X5L时,服务器端的回来状态码200,内容是客户端请求的能源,同时有贰个Last-Modified的本性标志此文件在劳务器端最终被修改的时间。

在浏览器第3回呼吁某1个URubiconL时,服务器端的回到状态码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?

一个普通的提出是:防止使用 ETag。那不是贰个再而叁实惠的提出。ETag
在认清内容是或不是确实退换方面确实提供了特别可信的支配。针对生成的
ETag,暗中认可的Apache方法须求把文件的索引节(inode),大小(size)和最终修改时间作为输入求值获得。那会导致在负载均衡的条件中,生成的
ETag 值变得毫无用处,因为各类服务器都会指向同一的文书生成3个不如的
Etag 值。那些可能就是绝无仅有的标题形成成千上万人统统禁止使用
ETag,其实假使正确地对准四个相配的文书生成四个旷世的 ETag
值,就不曾须求禁止使用 ETag 了。

参考 Should your site be using etags or
not?

客户端第壹回呼吁此ULX570L时,依据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间以往文件是或不是有被改换过:

客户端第2遍呼吁此U凯雷德L时,依据HTTP协议的显明,浏览器会向服务器传送If-Modified-Since报头,询问该时间过后文件是还是不是有被修改过:

手动按下 Ctrl-RAV4

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

本条头对于部分人来讲只怕相比较面生。

当2个财富启用了 gzip 压缩,并且被代理服务器缓存,客户端借使不援救 gzip
压缩,那么在如此的情事下将会获得不正确的多少(也正是,压缩过的多寡)。那将会使代理服务器缓存五个本子的财富:3个是减掉过的,3个是没压缩过的。正确版本的财富将要请求头发送之后进展传输。

再有贰个现实的原因: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的问题

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

一、一些文书会被编辑,但内容未有退换,这一年不期待客户端以为那一个文件被修改了,而重新得到财富。

二、有个别文件修改12分频仍,举例在秒以下的时间内展开修改,If-Modified-Since不能检查到。

二、有个别文件修改10分频繁,例如在秒以下的时光内开始展览改造,If-Modified-Since无法检查到。

三、某个服务器不能够纯粹的拿走文件的末段修改时间。

叁、有些服务器无法确切的得到文件的结尾修改时间。

 

 

Expires(Freshness)

Expires(Freshness)

Expires用来支配缓存失效的日子。当浏览器看到响应中有一个Expires头时,它会和对应的机件一齐保存到其缓存中,只要组件未有过期,浏览器就会动用缓存版本而不会进展其余的HTTP请求。永恒的Expires头适用于图片等不平日更新的能源。Expires设置的日子格式必须为青霉素T(格林尼治标准时间)。Expires既适用于
HTTP1.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头使用的是三个特定的时光,要求客户端和劳务器端的机械石英钟严谨同步。假诺服务器和客户端的年华不统1,那有不小可能率出现缓存提前失效的情事,存在不牢固性。其次,假使Expires的日子到来,须求在服务器配置中再提供一个新的日子。

首先,Expires头使用的是三个特定的时光,须要客户端和服务器端的石英钟严峻同步。假诺服务器和客户端的年华不联合,那有希望出现缓存提前失效的图景,存在不牢固性。其次,就算Expires的日期到来,须要在服务器配置中再提供贰个新的日子。

 

 

Cache-Control(Freshness)

Cache-Control(Freshness)

HTTP一.1引进了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意味组件将被缓存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=5 代表当访问此网页后的5秒内不会去重新做客服务器.

若是钦赐cache-control的值为private、no-cache、must-revalidate,那么展开新窗口访问时都会再也访问服务器。而壹旦内定了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

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

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

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

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

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

           ETag:”50b1c1d4f775c61:df3″

           ETag:”50b1c1d4f775c61:df3″

先是次呼吁时:

率先次呼吁时:

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

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

二.服务器管理请求,再次回到资源,包涵Http Etag和状态码200

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

第一次呼吁时:

第1回呼吁时:

1.客户端发起 HTTP GET
请求2个文本,请求中包罗2个If-None-Match头,内容正是首先次呼吁时服务器重返的Etag的值

一.客户端发起 HTTP GET
请求三个文本,请求中概括贰个If-None-Match头,内容便是首先次呼吁时服务器再次回到的Etag的值

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

贰.服务器剖断接受到的Etag和总括出来的Etag是还是不是匹配。若相配,重临30四状态码,客户端继续使用本地的缓存。若不包容,再次来到财富和新的ETag。

ETag带来的标题

ETag带来的主题材料

ETag平日采纳组件的少数质量来协会它,这个属性对于特定的下榻了网址服务器来说是唯1的。当浏览器从一台服务器上得到了土生土长组件,之后又向此外一台差别的服务器发起条件GET请求时,ETag是不会同盟的。

ETag平时选用组件的一些质量来布局它,这么些属性对于特定的夜宿了网址服务器来讲是唯一的。当浏览器从1台服务器上收获了原来组件,之后又向其它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地图