CDN 是怎样工作的?静态资源更新后怎样让用户拿到新版本?
先自己想一想,再看参考要点
参考要点
- CDN 用更靠近用户的服务器分发静态资源,用户请求通过 DNS 调度到最近的节点,节点没有缓存时再回源站获取
- 调度一般靠 CNAME:网站把域名用 CNAME 指向 CDN 提供的域名,CDN 的调度系统按查询来源的位置返回较近的节点
- 资源更新后节点上可能还缓存着旧版本,常用的做法是在文件名中带上版本或内容的哈希并设置很长的缓存时间,入口的 HTML 用 no-cache,也可以调用 CDN 的刷新接口,但一次刷新大量文件会让回源请求突然增多
- 按用户生成的内容、带 Cache-Control: private 的响应和实时变化的接口不适合由 CDN 缓存,缓存键要去掉与内容无关的查询参数,否则同一个文件被缓存成很多份,命中率下降