CDN
CDN 的任务是实际上缩短物理距离,目标是提高站点渲染速度和性能。
优点
- CDN 节点解决了 跨运营商 和 跨地域 访问的问题,访问延时大大降低;
- 大部分请求在 CDN 边缘节点完成,CDN 起到了分流作用,减轻了源站的负载。
缺点
当网站更新时,如果 CDN 节点上数据没有及时更新,即便用户再浏览器使用 Ctrl + F5 的方式使浏览器端的缓存失效,也会因为 CDN 边缘节点没有同步最新数据而导致用户访问异常
缓存
通过 http 响应头中的Cache-control: max-age 的字段来设置 CDN 边缘节点数据缓存时间。
HTTP请求流程:
- 用户在浏览器输入要访问的网站域名,向本地 DNS 发起域名解析请求。
- 域名解析的请求被发往网站授权 DNS 服务器。
- 网站 DNS 服务器解析发现域名已经 CNAME 到了 www.example.com.c.cdnhwc1.com。
- 请求被指向 CDN 服务。
- CDN 对域名进行智能解析,将响应速度最快的 CDN 节点 IP 地址返回给本地 DNS。
- 取响应速度最快的 CDN 节点 IP 地址。
- 浏览器在得到速度最快节点的 IP 地址以后,向 CDN 节点发出访问请求。
此时判断是否有缓存,缓存是否有效。如果有效
- CDN 节点将用户所需资源返回给用户。
无缓存或者缓存失效
- CDN 节点回源站拉取用户所需资源。
- 将回源拉取的资源缓存至节点。
- 将用户所需资源返回给用户。