Web缓存机制简介

Web缓存机制简介

一.浏览器缓存与离线缓存

1.1Browser cache和APP cache更新机制示意图

Browser cache更新示意图

App cache更新示意图
其中browser cache的机制大家都很清楚了, 其中离线应用的更新是: 除了第一次访问是直接拉取server的, 然后后台更新app cache之外, 其余的情况都是直接访问app cache. 因此, 要如果离线应用的代码更新了, 只有下次打开或者刷新才会生效.。

二、在HTTP请求和响应中常见的与缓存有关的消息报头:




三、用户操作行为与缓存

用户在使用浏览器的时候,会有各种操作,比如输入地址后回车,按F5刷新等,这些行为会对缓存有什么影响呢?

通过上表我们可以看到,当用户在按F5进行刷新的时候,会忽略Expires/Cache-Control的设置,会再次发送请求去服务器请求,而Last-Modified/Etag还是有效的,服务器会根据情况判断返回304还是200;而当用户使用Ctrl+F5进行强制刷新的时候,只是所有的缓存机制都将失效,重新从服务器拉去资源。

四、无法被缓存的请求:

1.    HTTP信息头中包含Cache-Control:no-cache,pragma:no-cache,或Cache-Control:max-age=0等告诉浏览器不用缓存的请求
2.    需要根据Cookie,认证信息等决定输入内容的动态请求是不能被缓存的
3.    经过HTTPS安全加密的请求(有人也经过测试发现,ie其实在头部加入Cache-Control:max-age信息,firefox在头部加入Cache-Control:Public之后,能够对HTTPS的资源进行缓存,参考《HTTPS的七个误解》)
4.    POST请求无法被缓存
5.    HTTP响应头中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的请求无法被缓存


五、Http缓存技术 ,304(Not Modified)和200(from cache)的区别?

200 OK (from cache):浏览器没有和服务器确认,直接使用了浏览器缓存;
304 (Not modified):浏览器会先和服务器确认一下缓存有效性,然后在再使用缓存;
当你第一次访问页面时,服务器会返回给你200状态码,同时在头里追加ETag值给你,浏览器拿到后将其缓存。当你再次访问的时候,因为浏览器已经有该地址的ETag值了,会将其缓存的ETag值内容放在请求头的If-None-Match中,服务器检查其自身内容的ETag是否与其一致,如果一致就返回304,告诉你内容和保存的一致,没有发生过变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值