快捷导航
蚂蚁部落 网站首页 前端教程 HTTP协议 查看内容

栏目导航

HTTP Etag与If-None-Match详解

2017-10-9 23:55| 发布者: admin| 查看: 84| 评论: 0|来自: 蚂蚁部落

更多关于HTTP协议的内容可以参阅HTTP协议详解一章节。

利用缓存可以提高页面的访问速度,提高用户体验,并且还能够减轻服务器压力。

首先对页面缓存做一下简单通俗的介绍,要获取一个页面需要向服务器发起一个请求,然后服务器会产生一个响应,响应内容经过浏览器解析之后呈现在我们面前,如果页面有大量的内容可以重复利用,那么就可以将这些内容在本地暂时缓存起来,当再次访问该页面时,就无需从服务器获取,直接就近获取即可。

利用缓存优点总结如下:

(1).避免从服务器再次获取资源,提高页面响应速度,进而用户体验得到提高。

(2).因为直接从本地获取,节省带宽。

(3).减轻了服务器压力,也是因为无需服务器发送需要的内容。

一.http缓存机制:

http缓存机制主要在http响应头中进行设定,相关字段主要有:

(1).Expires。

(2).Cache-Control。

(3).Last-Modified。

(4).If-Modified-Since。

(5).Etag。

1.Expires:

它是在HTTP1.0协议中定义,用来规定一个时间点,在此时间点之前,浏览器可以无需从服务器获取数据,直接从本地缓存获得即可;此时间采用GMT格式,并非本地时间。

关于HTTP版本的发展可以参阅HTTP版本发展介绍一章节。

2.Cache-Control:

它是在HTTP1.1协议中定义,相对于Expires更加具体和细致,所以可以无视Expires字段的存在。

Cache-Control字段主要可能的值如下:

(1).max-age:用来设置资源(representations)可以被缓存多长时间,单位为秒。

(2).s-maxage:和max-age是一样的,不过它只针对代理服务器缓存而言。

(3).public:指示响应可被任何缓存区缓存。

(4).private:只能针对个人用户,而不能被代理服务器缓存。

(5).no-cache:强制客户端直接向服务器发送请求,也就是说每次请求都必须向服务器发送。服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。这很容易产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。

(6).no-store:禁止一切缓存(这个才是响应不被缓存的意思)。

3.Etag & If-None-Match:

它们在HTTP1.1协议中定义,主要用来解决Last-Modified存在的一些问题。

Etag工作过程描述如下:

(1).浏览器客户端对HTTP服务器页面A发起请求。

(2).HTTP服务器返回页面A,同时给A添加上ETag。

(3).页面A通过浏览器展现给用户,并且将ETag缓存起来。

(4).当客户端再次请求该页面时,并将上次缓存的起来的ETag发送到服务器。

(5).服务器会比对客服端发送过来的ETag是否与服务器的相同,如果相同,就将If-None-Match的值设为false,返回状态为304,客户端继续使用本地缓存。

Last-Modified工作过程基本与Etag是一致的;下面看几个通过Fiddler工具捕捉相关信息:

a:3:{s:3:\"pic\";s:43:\"portal/201710/10/014907f0eh9em0avnvt08n.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

相同颜色框中的数据如果相同,那么就使用缓存,否则就从服务器读取内容。

特别说明:Etag的优先级高于Last-Modified;Last-Modified缺点如下:

(1).Last-Modified只能精确到秒,如果文件在1秒钟内,被修改多次,将不能准确标注文件修改时间。

(2).如果文件被生成,且内容并没有任何变化,但Last-Modified却改变,导致文件没法使用缓存;

(3).有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形。


鲜花

握手

雷人

路过

鸡蛋
上一篇:HTTP 状态码详解下一篇:HTTP 持久连接

最新评论

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-10-19 02:28 , Processed in 0.062926 second(s), 20 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

返回顶部