六、HTTP协议中的缓存 - 蓝蓝设计_UI设计公司

帝皇彩票官网

追求卓越一诺千金

蓝蓝设计,2011年成立,主创清华团队,专注软件和互联网ui设计开发。擅长企业信息化管理、监控、大数据软件UIUE咨询和设计开发服务。立足UI,好好学习,天天进步!


六、HTTP协议中的缓存

2019-10-17 释然 前端及开发文章及欣赏


一、缓存简介
缓存无处不在,浏览器端的缓存、服务器端的缓存、代理服务器的缓存、对象缓存、数据库也有缓存……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=60 60秒后缓存过期(相对时间)
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.公有缓存、私有缓存的区别:一个可以多个不同的客户端使用,一个只可唯一的客户端使用;


蓝蓝设计www.bjhbys.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计  cs界面设计  ipad界面设计  包装设计  图标定制  用户体验 、交互设计、 网站建设 平面设计服务。

标签: 六、HTTP协议中的缓存 « APP设计的高级知识 | 淘票票9.0改版背后的设计思考与体验度量»


蓝蓝 http://www.bjhbys.com

订阅Rss
北京两步彩 福建11选5开奖 欢乐斗牛 广西快3 吉利彩票开奖 状元彩票计划 吉林快3 吉利彩票开户 大象彩票登入 博发彩票开户