浏览器缓存原理总结
副标题[/!--empirenews.page--]
一、浏览器缓存基本认识 分为强缓存和协商缓存
二、强缓存的原理 2.1 介绍 当浏览器对某个资源的请求命中了强缓存时,返回的http状态为200,在chrome的开发者工具的network里面size会显示为from cache,比如京东的首页里就有很多静态资源配置了强缓存,用chrome打开几次,再用f12查看network,可以看到有不少请求就是从缓存中加载的 ![]() 强缓存是利用Expires或者Cache-Control这两个http response header实现的,它们都用来表示资源在客户端缓存的有效期。 Expires是http1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回,用GMT格式的字符串表示,如:Expires:Thu, 31 Dec 2037 23:55:55 GMT 2.2 Expires缓存原理
![]()
Expires是较老的强缓存管理header,由于它是服务器返回的一个绝对时间,在服务器时间与客户端时间相差较大时,缓存管理容易出现问题,比如随意修改下客户端时间,就能影响缓存命中的结果。所以在http1.1的时候,提出了一个新的header,就是Cache-Control,这是一个相对时间,在配置缓存的时候,以秒为单位,用数值表示,如:Cache-Control:max-age=315360000 2.3 Cache-Control缓存原理 浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上Cache-Control,如: ![]()
Cache-Control描述的是一个相对时间,在进行缓存命中的时候,都是利用客户端时间进行判断,所以相比较Expires,Cache-Control的缓存管理更有效,安全一些。 这两个header可以只启用一个,也可以同时启用,当response header中,Expires和Cache-Control同时存在时,Cache-Control优先级高于Expires: ![]() 三、强缓存的管理 前面介绍的是强缓存的原理,在实际应用中我们会碰到需要强缓存的场景和不需要强缓存的场景,通常有2种方式来设置是否启用强缓存
比如在javaweb里面,我们可以使用类似下面的代码设置强缓存
还可以通过类似下面的java代码设置不启用强缓存
(编辑:吕梁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Linux实用监控脚本——使用 Shell检测进程 CPU 利用率
- 华为鸿蒙OS发布!余承东:随时可替换安卓;方舟编译器将支持
- 官方win10iso镜像文件下载办法
- 判断Linux系统是否被入侵,你需要几步?9个小技巧分享!
- 如何修复Windows 10中的错误0x80D03805
- 推荐10个新扩展,让你的Chrome成为超好用的浏览器!
- windows-server-2012 – 允许非管理员用户关闭/重启Server
- 微软警告Windows 10客户 5月结束对多个过时版本支持
- Win10什么自带程序流程能卸载?Win10卸载没有用的自带软件
- hyper-v-server-2012-r2 – Windows 10更新后无法连接Hyper