放肆青春的博客
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)

放肆青春

一个前端菜鸟的技术成长之路
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)
  • 计算机网络
  • http
  • https
  • 缓存
  • TCP
  • UDP
  • DNS
  • CDN
    • CDN
      • CDN 缓存
      • CDN 回源
      • CDN 作用
  • 跨域
  • 请求

    • ajax
    • axios
    • fetch
    • websocket
  • 前端本地存储
  • 代理
  • 加密
  • 从输入URL到页面加载的过程
  • network
放肆青春
2021-06-10

CDN

# CDN

CDN 是 Content Delivery Network 的缩写,即“内容分发网络”

CDN 两大核心:缓存和回源

CDN 的工作原理就是将您源站的资源缓存到位于全球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验

其目的是通过在现有的 Internet 中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可 以就近取得所需的内容,解决 Internet 网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等 原因,解决用户访问网站的响应速度慢的根本原因。

# CDN 缓存

  1. CDN 的缓存适用范围:

CDN 对于常见的 HTTP 请求均是支持的,具体对不同请求方式的支持情况请参考表一。但是有一点需要注意的是虽然对这些类型的 HTTP 请求均是支持的,但是并不是对所有请求方式都会进行缓存的。 CDN 仅会对于 GET 请求进行缓存,而对于其他的请求均不进行缓存,仅是起到中间代理、转发的功能。(对于 http 协议里其他请求比如说 put 以及 POST 等动态回源的一些请求,CDN 可能就不会去做任何缓存的处理,而是直接透传给源站,然后由源站进行对应的处理后返回给客户端。)因此我们建议添加 CDN 的站点源站最好能够实现动静分离。将动态请求和静态请求的内容独立成两个站点,而 CDN 仅仅加速静态站点中的资源。

  1. CDN 缓存什么内容

缓存 html、图片、css、xml 等静态资源,不缓存含有?的动态地址、jsp、php,js 文件也不缓存【除非特殊设置】

缓存原站返回 HTTP 状态为 20*或 304,不缓存其他状态(例如 404,500,503)

  1. CDN 缓存内容的更新

a)用户首次请求,CDN 从原站抓取后缓存,直到文件过期后有用户请求再次更新

b)程序主动通知 CDN 抓取

  1. CDN 返回 response 头解读

我们在实际使用的过程中,我们又如何查看当前这个文件到底有没有在 CDN 节点上缓存或者它缓存的时间是多少呢?

资源在经过 CDN 节点以后,一定会在对应的 http 的 response 头里加若干的字段,如图即是常见的通过 CDN 访问的响应头,可以根据 X-Cache 查看当前该资源是否有在 CDN 的 L1 节点缓存,而查看 L2 节点的缓存情况则需要根据 Via 头中的第一部分查看,如果是 M 即是 MISS,表示对应的资源没有在对应的 CDN 节点上缓存;而出现 H 表示对应的资源有在 CDN 节点上缓。X-Swift-SaveTime 表示该资源缓存到 CDN 节点上的 GMT 时间(相比于北京时间晚 8 小时);而 X-Swift-CacheTime 表示该资源在 CDN 节点上缓存多长时间会过期。

VIA 字段

VIA 字段,包含有四段信息,其中第一段和第三段会有一个 M 或者 H 的标识。第一段说明 L2 节点的缓存情况,第三段指的是 L1 节点的缓存情况,这两个其中有一个包含 H,就表示对应的资源已经在 CDN 节点上进行了缓存。那这一次访问就不需要再回到源站拉取对应的资源了。

# CDN 回源

回源:指的是 CDN 缓存服务器从源站获取所需要分发的资源。

CDN 缓存服务器一般是不会主动回源的,只有在缓存服务器缺少用户请求的资源时(可能是该资源 CDN 缓存服务器没有缓存,也可能是缓存过期),CDN 缓存服务器才会向源站发起请求,获取所需要分发的资源。

回源域名一般是 cdn 领域的专业术语,通常情况下,是直接用 ip 进行回源的,但是如果客户源站有多个 ip,并且 ip 地址会经常变化,对于 cdn 厂商来说,为了避免经常更改配置(回源 ip),会采用回源域名方式进行回源,这样即使源站的 ip 变化了,也不影响原有的配置。

回源比: 其实回源比和缓存的命中率正好相反,回源比高,说明缓存系统的缓存命中率低。回源比分为回源请求数比例和回源流量比例两种。

回源请求数比例:收集所有边缘节点上的请求记录,没有缓存或缓存过期的请求以及不可缓存的请求均被作为回源请求,发往源站点服务器响应。其他的请求则由缓存系统直接使用缓存响应。其计算公式为:回源请求数/(回源请求数+用户发送的请求数)。

回源流量比:即用户所产生的流量当中,有多少流量是直接有源站点服务器响应的,其计算公式为:回源流量/(回源流量+用户请求访问的流量)

# CDN 作用

  1. 提高用户访问体验(提高网站访问速度),降低用户流失率

  2. 通过节省骨干网带宽,减少带宽需求量;

  3. 实现跨运营商、跨地域的全网覆盖

  4. 提高源站安全性,降低被黑客攻击的风险

  5. 提高网站可靠性,降低故障影响范围


参考:CDN 缓存(上)-CDN 初认识 https://www.cnblogs.com/kunmomo/p/13067804.html (opens new window)

使用 CDN 缓存后的网站的访问过程 https://www.cnblogs.com/kunmomo/p/13067833.html (opens new window)

CDN 缓存策略、CDN 缓存和浏览器缓存之间的关系、回源和回源比 https://www.cnblogs.com/kunmomo/p/13067833.html (opens new window)

更新时间: 1/27/2022, 6:22:25 PM
DNS
跨域

← DNS 跨域→

最近更新
01
前端权限管理
02-24
02
vue2指令
02-24
03
vue2 hook
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2022 放肆青春
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式