静态资源缓存机制之利用HTTP缓存

为了合理的加速页面展示,肯定会用到缓存(避免每次资源请求,或者请求返回请求内容),加快页面非首次展示的速度,目前通用的策略是:

缓存入口资源即html文件,其他资源强缓存的时间足够长(几个月或者几年都可以),非入口文件的更新采用更改文件名的方式

这样每次资源的更改,便资源名发生改动(资源内容的MD5),也就是请求新的资源,然后强缓存足够长时间,后面不更新就只在缓存中拿资源即可,都不用每次与服务端建立连接,再传输资源内容。

补充:

  1. 更新缓存历史中,出现过用时间戳的方式,这样其实有一定的更新风险,如下
  • 发生风险的时机在于更新线上资源的时候,同时访问了页面,由于各个资源有依赖关系,如果先发布了引用其他资源的资源,而后才更新依赖的资源,便出现了问题
  • index.html中引入了index.js?t=1,发布资源过程先发布了index.html,同时新的index.html已被用户客户端请求到,然后请求里面的index.js?t=2,而此时如果线上发布还没有发布到index.js(发布也需要时间),这样返回的仍旧是老的index.js?t=1所加载的index.js,即客户端拿到的是老的index.js,如此就出问题提啦!!!
  1. 强缓存(expired, cache-controle),协商缓存(last-modified/If-Modified-Since,Etag/If-None-Match),这部分后面说明....

转载于:https://juejin.im/post/5bd00de1e51d457a1179e46c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值