六、HTTP协议中的缓存

一、缓存简介

缓存无处不在,浏览器端的缓存、服务器端的缓存、代理服务器的缓存、对象缓存、数据库也有缓存……HTTP中具有缓存功能的是浏览器缓存和代理服务器缓存。下面说一下缓存的优点

1.减少冗余的数据传输,节省了传输时间

2.减少服务器的负担,大大提高了网站的性能

3.加快了客户端加载网页的速度

二、使用Fiddler如何查看缓存的Header

与缓存相关的内容放在Header中的Cache项里;Requests和Responses均是这样。如图:

三、缓存的新鲜度(通过什么方式判断其是否最新,如何刷新缓存)

Web服务器通过两种方式判断浏览器缓存是否最新:

(1)浏览器把缓存文件的最后修改时间通过Header“If-Modified-Since”项传递给Web服务器。

(2)浏览器把缓存文件的ETag通过Header“If-None-Match”项传递给Web服务器。

简单描述一下,浏览器端想请求一个文档,它首先检查本地缓存,发现存在这个文档的缓存,获取缓存文档的最后修改时间,发送请求,将值放在Header中的“If-Modified-Since”项传递给Web服务器。Web服务器接收到请求后,将服务器的文档修改时间(Last-Modified)与HTTP请求中的header中的“If-Modified-Since”值相比较,有两种情况,如下面图示:

1.缓存有效:

2.缓存无效

截图举例:

上面说的是If-Modified-Since值对比的方式;下面说一下ETa'g;

四、ETag

ETag(Entity Tag):实体标签;是根据实体内容生成的一段hash字符串(类似MD5之后的结果),可以用来标识资源的状态(当资源发送变化时,ETag也会跟着改变);ETag是Web服务端产生的,然后通过response响应给浏览器。使用ETag,主要解决Last-Modified无法解决的情况:

(1.某些服务器不能精确得到文件的If-Modified-Since来判断文件是否更新;

(2.某些文件修改非常频繁,以小于秒的单元进行修改,而Last-Modified最精确单元为秒;

(3.有些文件最后修改时间变化了,但是内容并没有变化,所以我们不希望浏览器以为文件已变化了;

五、与缓存相关的header

字段名称释义
Cache-Control:max-age=0以秒为单位
If-Modified-Since:Fri, 11 Jan 2019 01:55:04 GMT缓存文件的最后修改时间
If-None-Match:W/"5c37f778-732"缓存文件的Etag的值
Cache-Control:no-cache不使用缓存
Pragma:no-cache不使用缓存
Cache-Control:public响应被缓存,可以共享与多用户
Cache-Control:private响应只能私有缓存,不可共享
Cache-Control:no-store绝对禁止缓存(机密、敏感文件)
Cache-Control:max-age=6060秒后缓存过期(相对时间)
Date:Fri, 11 Jan 2019 01:55:04 GMT当前发送时间
Expires:Fri, 11 Jan 2019 01:55:04 GMT缓存过期时间设置(绝对时间)
Last-Modified:Fri, 11 Jan 2019 01:55:04 GMT服务器端文件的最后修改时间
Etag:W/"5c37f778-732"服务器端文件的Etag值

六、关于缓存的常识

1.如何让浏览器不使用缓存?

答:【Ctrl+F5】快捷键强制刷新浏览器,让浏览器不使用缓存;此时Fiddler抓包所看到的请求Header中都会带有Cache-Control:no-cache;

2.如何让浏览器直接使用缓存,不请求服务器进行缓存验证?

答:第一次访问与第二次访问同一个网页;(注意:第二次访问时,输入网址,直接回车)浏览器会直接使用有效的缓存,而不会发生HTTP请求去服务器验证缓存,这种情况称之为缓存命中

使用Fiddler抓包,现象:第一次访问,有70多个Session;第二次访问,仅40多个请求;

3.浏览器均可在设置中设置不使用缓存;

4.公有缓存、私有缓存的区别:一个可以多个不同的客户端使用,一个只可唯一的客户端使用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值