摘要
一、静态资源缓存
二、浏览器缓存
2.1 强制缓存
expries
cache control
2.2 etag-modify协商缓存
2.3 浏览器缓存常见配置
- 多级集群负载时last-modified必须保持一致。
- 还有一些场景下我们希望禁用浏览器缓存。比如轮训api上报数据数据。
- 浏览器缓存很难彻底禁用,大家的做法是加版本号,随机数等方法。
- 只缓存200响应头的数据,像3XX这类跳转的页面不需要缓存。
- 对于js,css这类可以缓存很久的数据,可以通过加版本号的方式更新内容。
- 不需要强一致性的数据,可以缓存几秒。
- 异步加载的接口数据,可以使用ETag来校验。
- 在服务器添加Server头,有利于排查错误。
- 分为手机APP和Client以及是否遵循http协议。
- 在没有联网的状态下可以展示数据。
- 避免流量消耗过多。
- 提前下发避免秒杀时同时下发数据造成流量短时间暴增。
- 兜底数据在服务器崩溃和网络不可用的时候展示。
- 临时缓存退出即清理。
- 固定缓存展示框架这种,可能很长时间不会更新,可用随客户端下发。
- 首页有的时候可以看做是框架应该禁用缓存,以保证加载的资源都是最新的。
- 父子连接页面跳转时有一部分内容不需要重新加载,可用从父菜单带过来。
- 预加载某些逻辑可用判定用户接下来的操作,那么可用异步加载那些资源。
- 漂亮的加载过程异步加载先展示框架,然后异步加载内容,避免主线程阻塞。
三、CDN缓存
四、正向代理缓存
IP黑白名单访问
五、反向代理缓存
proxy_cache
cache_key
六、Nginx内置缓存
Nginx的断点续传Range