技术咨询、项目合作、广告投放、简历咨询、技术文档下载 点击这里 联系博主

# CDN访问流程及刷新预热

内容分发网络(Content Delivery Network),是在现有 Internet 中增加的一层新的网络架构,由遍布全国的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性.

# 加速原理

假设您的业务源站域名为 www.test.com,域名接入 CDN 开始使用加速服务后,当您的用户发起 HTTP 请求时,实际的处理流程如下图所示:

详细说明如下:

  1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME (opens new window) 指向的 CDN 专用 DNS 服务器。

  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。

  3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。

  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

  5. 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:

  6. 根据用户 IP 地址,判断哪一台服务器距用户最近;

  7. 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;

  8. 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

  9. 全局负载均衡设备把服务器的 IP 地址返回给用户。

  10. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的全局负载均衡(GSLB)设备,将需要分发的内容注入 CDN,就可以实现内容加速了。

# 缓存设置

第一,缓存的设置,max-age 我们都用过,在 Cache-Control 中经常用于缓存的控制,可是 max-age 设置的缓存会应用于一个请求经过的每一级,如果我们希望 CDN 不缓存那么久,要怎么办呢?那就是 s-maxage,它用于设置代理服务器的缓存时间,会覆盖 max-age 的设置,这样我们可以把 max-age 用于本地缓存,把 s-maxage 用于 CDN 缓存时间,避免脏数据的产生。

# 判断是否命中缓存

无论是我们自己在开发过程中,还是帮客户 debug 的过程中,我们都会考虑一件事——这个资源是否命中了CDN,是否是因为CDN导致的问题,这个时候就要秀一波操作了。

在各大厂商的 CDN 返回的数据中都会有一个 X-Cache,上面内容是 Hit 或者 Miss,还会加上诸如 Memory 或者 Disk 的缩写表示内存还是磁盘,如果出现 Upstream 或者 Miss 则表示没有命中

# CDN预热

我们知道将资源部署到CDN之后,当首批用户访问时并不能及时的在就近的节点上拉取对应的资源,所以通常我们需要对CDN进行预热。

预热功能是指提交URL预热请求后,源站将会主动将对应的资源缓存到全站加速节点,当您首次请求时,就能直接从全站加速节点缓存中获取到最新的请求资源,无需再回源站获取。预热功能会提高缓存命中率

预热的操作步骤一般是在云服务厂商上面配置对应哪些url进行预热,为什么不使用目录预热呢,其主要原因是没法知道目录下面的那些资源需要预热。

一个例子:

# CDN刷新

内容分发网络(CDN)提供基础缓存配置能力,可根据指定业务类型、目录、具体 URL 等各类规则设置缓存过期时间,来达到定期清理节点缓存资源,回源站重新拉取最新资源重新缓存的目的。

除此之外,CDN 提供了缓存刷新的能力,可批量指定 URL 或目录进行刷新操作:

  • 刷新 URL:源站有少量文件更新时,可以使用 URL 刷新 来主动删除 CDN 节点上的资源文件。新的请求进来时,CDN 节点会回源获取文件并将新的资源文件缓存至 CDN 节点,所以这是一个主动更新的过程

  • 刷新目录:选择 “刷新变更资源” 模式,当用户访问匹配目录下资源时,会回源获取资源的 Last-Modify 信息,若与当前缓存资源一致,则直接返回已缓存资源,若不一致,回源拉取资源并重新缓存;选择 “刷新全部资源” 时,当用户访问匹配目录下资源时,直接回源拉取新资源返回给用户,并重新缓存新资源

TIP

说明: 刷新成功执行后,节点上对应资源无有效缓存,当用户再次发起访问时,节点回源站拉取所需资源,并重新缓存在节点上。因此提交大量的刷新任务,会清空较多缓存,从而导致回源请求突增,源站会产生较大压力。

本文参考自CDN简单原理介绍 (opens new window)

【未经作者允许禁止转载】 Last Updated: 2/4/2024, 6:06:40 AM