CDN缓存的那些事儿

2021-09-06 10:36:12 浏览数 (1)

缓存是什么

  • 缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。
  • 老司机举栗子:缓存是把异地恋的女朋友变成家中的老婆大人。同理通过使用什么,能够获取更快的什么,留给你们自己想象了。(缓存可以过期…….. 我已经在键盘上紧张颤抖地希望屏幕上不要出现一个字。)
  • 再举个栗子:缓存是把种子里的女朋友变成硬盘里的女神。通过使用硬盘,你能够获取更快的观看速度。(情人节别人送花 送戒指,你可以自豪地说我给我女朋友买了一个大房子–2T硬盘。)

默认缓存策略

  • 针对静态资源,所有正常状态码(大于等于200小于400)均缓存 8 天。其中 301 响应缓存 2 小时,302 响应缓存 20 分钟。
  • 针对动态资源,程序会自动识别,则不进行缓存。
  • 对于其他大于等于 400 的不正常响应,不缓存。

缓存优先级

不缓存配置(后台设置) > 自定义缓存配置(后台配置) > 源站缓存配置 > 默认缓存策略 PS:源站缓存配置,指 Cache-Control 和 Expires 请求头的设置

缓存刷新和缓存预热

  • 缓存刷新:当源站有少量资源更新时,可以使用 URL 刷新 来主动删除 CDN 节点上的资源。当用户对该资源发起请求时,节点会回源拉取资源,并缓存一份更新后的资源在分发节点。当源站有针对资源进行批量更新时,可以通过规则刷新来刷新节点缓存文件。实际上,规则刷新并没有删除节点资源,而是规则一旦生效之后,缓存在 CDN 节点的资源会被标记为过期,新的请求会回源校验一次,如果源站该资源有更新,则将新的资源响应给最终用户并替换节点上的旧资源。
  • 缓存预热:将需要预热的资源推送到 CDN 边缘节点,用户访问时将不需要再回源站,可以直接命中缓存。这样可以加快资源的首次访问,同时缓解突增回源流量给源站造成的压力。

常见问题

  • 怎样查看资源是否缓存,什么时候过期? 可以通过浏览器获取响应头信息(参考[浏览器获取网络请求信息]),Age值表示在CDN上的缓存时间,单位为秒。 CDN 缓存服务器严格遵守http的标准协议,具体的缓存时间由http 响应头里面的 Cache-Control 和 Expires 响应头控制。 Cache-Control:max-age=691200 表示该资源691200秒(8天)后过期。Expires:Wed, 05 Apr 2017 16:51:00 GMT 表示过期时间。
  • 一个服务下的两个加速域名是否缓存共享? 如果填写了回源 Host,那就共享缓存。不填写回源 Host,那就不共享缓存。 PS:关于回源 Host 可以参考[老司机带我飞系列一 : 回源Host和回源地址图文详解]
  • 同一个服务下 http 和 https 是否缓存共享? 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 如果开启协议跟随,那就共享缓存。反之则不共享缓存。
  • 缓存刷新多久生效? 客户自主源站的 CDN 服务,执行后会在 10 分钟内生效。
  • 使用CDN以后登录不了后台了怎么办? 对于动态文件一般类似是带有cookie id 的登陆页面,交易页面,或者是需要与数据库进行交互生成的页面,建议直接在后台配置不缓存。 然后在提交一下刷新,过10分钟以后在尝试登录一下。
cdn

0 人点赞