菜单

浏览器缓存机制

2019年3月15日 - 金沙前端

既生Last-Modified何生Etag?

你可能会以为接纳Last-Modified已经得以让浏览器知道地方的缓存副本是不是丰硕新,为啥还必要Etag(实体标识)呢?HTTP1.第11中学Etag的产出重庆大学是为着消除几个Last-Modified相比较难消除的难点:

l  Last-Modified标注的终极修改只好精确到秒级,假诺有个别文件在1分钟以内,被修改数次的话,它将无法准确标注文件的改动时间

l  即使某个文件会被限期生成,当有时内容并没有别的变化,但Last-Modified却改变了,导致文件无法使用缓存

l  有大概存在服务器并未确切获取文件修改时间,大概与代理服务器时间不等同等状态

Etag是服务器自动生成或然由开发者生成的对应能源在劳务器端的绝无仅有标识符,能够更进一步纯粹的操纵缓存。Last-Modified与ETag**是能够一起使用的,服务器会先行验证ETag**,一致的动静下,才会继续比对Last-Modified,最终才控制是不是再次来到304

Last-Modified/If-Modified-Since

Last-Modified/If-Modified-Since要配合Cache-Control使用。

l  Last-Modified:标示那一个响应能源的最终修改时间。web服务器在响应请求时,告诉浏览器能源的终极修改时间。

l  If-Modified-Since:当财富过期时(使用Cache-Control标识的max-age),发现能源有着Last-Modified评释,则再一次向web服务器请求时带上头 If-Modified-Since,表示请求时间。web服务器收到请求后发觉有头If-Modified-Since **则与被呼吁能源的最终修改时间举行比对**。若最后修改时间较新,表明财富又被转移过,则响应整片能源内容(写在响应新闻包体内),HTTP
200;若最后修改时间较旧,表明能源无新修改,则响应HTTP 304
(无需包体,节省浏览),告知浏览器继续使用所保存的cache。

上边小编第壹介绍HTTP协议定义的缓存机制。

总结

浏览器第三次呼吁:

图片 1

浏览器再一次请求时:

图片 2

1 赞 6 收藏
评论

Etag/If-None-Match

Etag/If-None-Match也要合作Cache-Control使用。

l  Etag:web服务器响应请求时,告诉浏览器当前财富在服务器的唯一标识(生成规则由服务器觉得)。Apache中,ETag的值,暗中同意是对文本的索引节(INode),大小(Size)和末段修改时间(MTime)实行Hash**后获取的

l  If-None-Match:当能源过期时(使用Cache-Control标识的max-age),发现财富有着Etage注脚,则再一次向web服务器请求时带上头If-None-Match **(Etag**的值)web服务器收到请求后发觉有头If-None-Match 则与被呼吁财富的相应校验串举行比对,决定重回200或304

既生Last-Modified何生Etag?

你大概会以为选取Last-Modified已经得以让浏览器知道地点的缓存副本是还是不是丰裕新,为何还供给Etag(实体标识)呢?HTTP1.第11中学Etag的产出根本是为了缓解多少个Last-Modified相比较难消除的题材:

l  Last-Modified标注的结尾修改只好精确到秒级,即使有个别文件在1分钟以内,被修改多次的话,它将无法精确标注文件的改动时间

l  假设有个别文件会被限期生成,当有时内容并没有别的变化,但Last-Modified却改变了,导致文件没办法使用缓存

l  有大概存在服务器并未准确获取文件修改时间,也许与代理服务器时间不一样等意况

Etag是服务器自动生成可能由开发者生成的对应能源在服务器端的绝无仅有标识符,能够越来越精确的决定缓存。Last-Modified与ETag**是能够一起行使的,服务器会先行验证ETag**,一致的意况下,才会继续比对Last-Modified,最后才决定是还是不是再次回到304

Cache-control策略(重点关切)

Cache-Control与Expires的效果一样,都以指明当前能源的有效期,控制浏览器是或不是直接从浏览器缓存取数据照旧再次发请求到劳动器取数据。只不过Cache-Control的挑选更加多,设置更细致,即便还要设置的话,其优先级高于**Expires**。

http协议头Cache-Control   

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各个消息中的指令含义如下:

  1. Public指示响应可被任何缓存区缓存。
  2. Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  3. no-cache指示请求或响应消息不能缓存
  4. no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  5. max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  6. min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  7. max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

恐怕地点十一分请求,web服务器重返的Cache-Control头的值为max-age=300,即4分钟(和方面包车型地铁Expires时间一致,这些不是必须的)。

 

既生Last-Modified何生Etag?

你只怕会认为接纳Last-Modified已经能够让浏览器知道地点的缓存副本是或不是丰富新,为啥还亟需Etag(实体标识)呢?HTTP1.第11中学Etag的面世重纵然为着消除多少个Last-Modified相比较难消除的标题:


Last-Modified标注的末段修改只好精确到秒级,要是某个文件在1分钟以内,被改动数十次来说,它将不能够确切标注文件的修改时间


若是某个文件会被限期生成,当有时内容并不曾其它变动,但Last-Modified却改变了,导致文件没办法使用缓存


有恐怕存在服务器并未精确获取文件修改时间,或然与代理服务器时间分歧等等情景

Etag是服务器自动生成只怕由开发者生成的附和财富在劳务器端的绝无仅有标识符,能够进一步规范的主宰缓存。Last-Modified与ETag是能够同步利用的,服务器会优先验证ETag,一致的地方下,才会持续比对Last-Modified,最终才决定是或不是重临304

Cache-control策略(重点关怀)

Cache-Control与Expires的意义一样,都以指明当前能源的有效期,控制浏览器是不是直接从浏览器缓存取数据如故再次发请求到服务器取数据。只可是Cache-Control的采取更多,设置更密切,假使同时安装的话,其预先级高于**Expires**。图片 3

或然地方十一分请求,web服务器重回的Cache-Control头的值为max-age=300,即肆分钟(和地点的Expires时间一致,那个不是必须的)。

图片 4

原稿地址:浏览器缓存机制

 

浏览器缓存机制,其实主要便是**HTTP协议定义的缓存机制(如: Expires; Cache-control**等)。可是也有非HTTP协议定义的缓存机制,如接纳HTML
Meta 标签,Web开发者能够在HTML页面包车型客车<head>节点中参与<meta>标签,代码如下:

 

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

 

 

 

上述代码的作用是报告浏览器当前页面不被缓存,每趟访问都必要去服务器拉取。使用上非常粗略,但唯有一对浏览器能够支撑,而且具备缓存代理服务器都不协理,因为代理不解析HTML内容小编。

下边作者最重要介绍HTTP协议定义的缓存机制。

html code

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

上边笔者重点介绍HTTP协议定义的缓存机制。上述代码的效应是报告浏览器当前页面不被缓存,每一趟访问都须求去服务器拉取。使用上很简短,但唯有一些浏览器能够支持,而且具有缓存代理服务器都不帮忙,因为代理不解析HTML内容本人。

浏览器缓存机制

2015/12/01 · HTML5 ·
HTTP

初稿出处:
吴秦   

浏览器缓存机制

浏览器缓存机制,其实重点就是**HTTP协议定义的缓存机制(如: Expires; Cache-control**等)。然则也有非HTTP协议定义的缓存机制,如选择HTML Meta 标签,Web开发者能够在HTML页面包车型地铁<head>节点中投入<meta>标签,代码如下:图片 5

上述代码的效果是报告浏览器当前页面不被缓存,每回访问都急需去服务器拉取。使用上很简短,但唯有一些浏览器能够支撑,而且具有缓存代理服务器都不扶助,因为代理不解析HTML内容小编。

上面笔者主要介绍HTTP协议定义的缓存机制。

 

Etag/If-None-Match

Etag/If-None-Match也要配合Cache-Control使用。

l  Etag:web服务器响应请求时,告诉浏览器当前财富在服务器的唯一标识(生成规则由服务器觉得)。Apache中,ETag的值,私下认可是对文本的索引节(INode),大小(Size)和最终修改时间(MTime)进行Hash**后拿走的

l  If-None-Match:当财富过期时(使用Cache-Control标识的max-age),发现能源有着Etage注解,则再度向web服务器请求时带上头If-None-Match(Etag**的值)web服务器收到请求后意识有头If-None-Match 则与被呼吁能源的应和校验串实行比对,决定回到200或304**。

用户作为与缓存

浏览器缓存行为还有用户的行事有关!!!

用户操作 Expires/Cache-Control Last-Modified/Etag
地址栏回车 有效 有效
页面链接跳转 有效 有效
新开窗口 有效 有效
前进、后退 有效 有效
F5刷新 无效 有效
Ctrl+F5刷新 无效 无效

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图