[TOC]
如何制定前端资源的最佳缓存策略?
如何制定前端资源的最佳缓存策略?什么意思?
前端有很多类型的资源 比如:.js .css .png index.html
不同资源,缓存时间的策略应该有所不同
- 比如图片,一般不会变更,缓存时间可以在一年以上(如何设置缓存请参考姊妹篇 浏览器缓存的起点 -> Cache-Control)
如何制定最佳缓存策略
最好的标准是资源更改的频率
Html | Css 和 js | 图片 | |
---|---|---|---|
频率 | 可能会频繁更改,需要每次都询问。 | 可能每月修改 | 几乎不变 |
Cache-Control | private, no-cache | Public, max-age=2592000 (一个月) | Public, max-age=31536000 (一年),stale-while-revalidate=86400 |
使缓存失效 | 每次都要询问,确保最新 | 自动过期或改名字(hash值) | 自动过期或改名字(hash值) |
现代工程化架构下的最佳缓存策略有所不同
背景: 任何一个css或js文件,只要有变更,通过webpack或其他打包工具,自动改变文件的名(hash值)
此工程下的最佳缓存策略可以设置为:
Html | Css 和 js | 图片 | |
---|---|---|---|
频率 | 可能会频繁更改,需要每次都询问。 | 可能每月修改 | 几乎不变 |
Cache-Control | private, no-cache | Public, max-age=31536000 (一年甚至永久) | Public, max-age=31536000 (一年甚至永久),stale-while-revalidate=86400 |
使缓存失效 | 每次都要询问,确保最新 | 改名字(hash值) | 改名字(hash值) |
(原创整理,有疑问或错误可以留言。如果有用,谢谢点赞~)
性能优化合集快速入口: