Http协议头分析,缓存机制

最常见的HTTP协议分为

HTTP/1.1、HTTP/1.0、HTTP/0.9

它们有什么区别

HTTP/1.1可以解析gzip压缩,而其他两个版本不直接解压。
判断为1.1版本服务器返回时候带 Content-Encoding: gzip 即可
注意:图片数据不要使用gzip,图片本身压缩过,在压缩不但会增加图片文件的大小,如果遇到大图片比如10M的一个图片,服务器可能需要一段时间才能压缩放回,这样客户端可能会加载数据失败,综上所述,图片绝对不要加gzip。

其中ETag可以发送文件的特征码,首次访问发送特征码后会返回

首次访问(服务器)发送 ’ ETag: “73ae97d46bc6aa688ce08b2e747ac9aa”
二次访问(客户端)发送 ’ If-None-Match: “73ae97d46bc6aa688ce08b2e747ac9aa”
“服务器”判断文件特征码是否和“客户端”的文件特征码相同,相同返回空的304来调用浏览器缓存
HTTP/1.1 304 Not Modified

那么Last-modified是什么呢,他是一个判断文件最后修改日期的时间来缓存的,那么有人会问为什么有了ETag还要有Last-modified,因为服务器可以直接获取文件的修改日期,而特征码需要读入数据,显然文件的修改日期比特征码要消耗要少一些,提升网站的访问速度。服务器发送的时间为GMT标准时间。

首次访问(服务器)发送 ’ Last-modified: Mon, 08 Jan 2018 03:54:50 GMT
二次访问(客户端)发送 ’ If-Modified-Since: Mon, 08 Jan 2018 03:54:50 GMT
“服务器”判断时间是否和“客户端”的时间相同,相同返回空的304来调用浏览器缓存
HTTP/1.1 304 Not Modified

下面是一个访问的例子:

客户端首次发送HTTP协议头

GET / HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) >Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8

服务器返回,注意其中的 ETag 和 Last-modified

Content-Encoding:gzip
content-length:536
content-type:text/html
ETag:”73ae97d46bc6aa688ce08b2e747ac9aa”
Last-modified:Mon, 08 Jan 2018 03:54:50 GMT
Server:worm

让后客户在次刷新此网页多了两个 If-None-Match 和 If-Modified-Since

GET / HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) >Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
If-None-Match: “73ae97d46bc6aa688ce08b2e747ac9aa”
If-Modified-Since: Mon, 08 Jan 2018 03:54:50 GMT

这时候服务器做判断,符合其中任意一条即返回
HTTP/1.1 304 Not Modified

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值