Cache_Control
Cache Control
稍微有点相关web性能优化
1 | node.js后台 |
更新缓存
如main.js你缓存了10年但是,你更新后修改了main.js的内容
缓存的策略就是url一致,如果你想更新缓存那就更改url
1 | <script src="main.js?v=1"></script> |
1 | // 文件上加一个随机字符串,这个如果你是webpack会帮你自动生成 |
这样就实现了更新缓存
什么是Expire
- 它与 Cache Control 效果一样
- 出现在 Cache Control之前
- 现在被Cache Control替代了
区别就是:
- Cache Control 是多长时间过期
- Expire 是 某年某月某日几时几分几秒过期
- Expire 的时间指的是本地时间
如果你系统时间是2050年,而缓存时间是2020年,你就没法缓存了
什么是 ETag
这样不得不提 MD5(摘要算法)
假如你下载一个linux系统400MB 下载过程中如何检测你下载的对不对呢?
- MD5就是为了这个场景出现的
1 | 如果网上的 linux系统 400MB MD5值是 XXXXXXXX |
每个文件对应一个 MD5值
文件改动越小MD5差异越大
- 应用ETag
1 | 引入MD5模块算出 文件对应的MD5值 |
- 这样你访问资源的时候响应头里就有了一个ETag头
1 | 形如 |
- 以后你在访问同一资源的时候,请求头里会有一个「if-None-Match」头
「if-None-Match」就是如果不匹配,就是如果你的MD5跟我一样就不需要下载
1 | if-None-Match:440c53453212aac08c2321sd |
ETag 和 Cache Control的区别
- 用 Cache Control是直接不请求,从盘符里读取资源
- 用 ETag 是直接不下载,但是仍然会发请求