[front-end] 浏览器文件缓存优化策略

本文针对的是浏览器级对文件缓存对一些优化对总结

HTTP缓存


http缓存指的是缓存http请求的数据,一次http请求包含几个主要步骤
http请求步骤
http缓存主要在第3和第4步进行,根据协议不同,会采用强缓存和协商缓存(弱缓存)两种

强缓存

强缓存指缓存在本地,不会再向服务端请求的文件缓存方式
强缓存采用的是 Cache-Control 与 Expires 两个字段
Expires:HTTP 1.0 http-date 过期时间 指定了文件过期的绝对时间,意即,当前时间小于过期时间时,采用本地缓存
Cache-Control: HTTP 1.1 Cache-Control有多个属性,具体参考,其中主要的是max-age,指定了文件过期的相对时间,意即,当前时间小于生成时间加上max-age时,采用本地缓存
Expires与Cache-Control共同使用时,Cache-Control的优先级更高
http返回头
设置了强缓存的文件status会变为200,然后从memory cache或disk cache中直接读取
强缓存了的请求

需要考虑的是,强缓存应当用在那些采用了hash(或者说,每次上线文件名不一样)的文件,否则会造成在过期时间内无法清楚缓存

协商缓存(弱缓存)

协商缓存指本地强缓存失效情况下,再向服务器验证的缓存机制
协商缓存采用的是 Etag 与 Last-Modified 两个字段
ETag: 用于唯一的标识一个资源,与If-Match与If-None-Match协同使用
If-Match: 有满足的ETag,才会返回(或上传)资源
If-None-Match: 没有满足的ETag,才会返回(或上传)资源

Last-Modified: 用于标识资源上次修改的时间
If-Modified-Since: 只有在指定时间后有修改,才会返回(或修改)资源
If-Unmodified-Since: 只有在指定时间后没有修改,才会返回(或修改)资源

同时使用的时候,Last-Modified的优先级低于ETag
如果缓存成功,协商缓存的数据请求会是304(get)
协商缓存
协商缓存

对于名称不变但是内容可能会变化的资源,采用协商缓存比较好

参考

  1. 前端性能优化之缓存技术
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值