什么是 CDN

CDN 全称是(Content Delivery NetWork,即内容分发网络。其目的是通过现有的 Internet 中增加一层新的缓存层,将网站的内容发布到最接近用户的网络 边缘 节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量达、网点分布不均等问题,提高用户访问网站的响应速度。

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

CDN 对网络的优化作用主要体现在如下几个方面:

  • 解决服务端的 第一公里 的问题
  • 缓解甚至消除不同运营商之间互联的瓶颈造成的影响
  • 减轻了各省的出口带宽压力
  • 缓解了骨干网的压力
  • 优化了网上热点内容

工作原理

传统访问过程

由上图可见,用户访问未使用 CDN 缓存网站的过程:

  1. 用户输入访问的域名,操作系统向 LocalDNS 查询域名的 IP 地址
  2. LocalDNS 向 Root DNS 查询域名的授权服务器(这里假设 LocalDNS 的缓存已过期)
  3. Root DNS 将域名授权 DNS 记录回应给 LocalDNS
  4. LocalDNS 得到域名授权的记录后,继续向域名授权 DNS 查询域名的 ip 地址
  5. LocalDNS 将得到的域名 ip 地址返回给客户端
  6. 用户得到域名IP地址后,访问站点服务器
  7. 站点服务器响应请求,将请求资源返回给客户端

CDN 访问过程

通过上图,我们可以了解到,使用了 CDN 缓存后的网站访问过程变更为:

  1. 用户输入访问的域名,操作系统向 LocalDNS 查询域名的IP地址
  2. LocalDNS 向 RootDNS 查询域名的授权服务器(这里假设缓存已过期)
  3. RootDNS 将域名授权 DNS 记录返回给 LocalDNS
  4. LocalDNS 得到域名的授权记录后,继续向域名授权 DNS 查询域名的IP地址
  5. 域名授权DNS查询域名记录后(一般是CNAME),回应给 LocalDNS
  6. 智能调度 DNS 根据一定的算法和策略(比如静态拓扑、容量等)将最合适的 CDN 节点IP地址回应给 LocalDNS
  7. LocalDNS 得到域名IP地址,返回给客户端
  8. 客户端得到IP地址后发送请求访问站点服务器
  9. CDN 节点服务器应答请求,将内容返回给客户端

通过以上的分析,我们可以得到:为了实现对普通用户透明(使用缓存后用户无需进行任何设置)访问,需要使用 DNS(域名解析)来引导用户来访问 Cache 服务器,以实现透明的加速服务。由于用户访问网站的第一步就是域名解析,所以通过修改 DNS 来引导用户访问是最简单有效的方式。

组成要素

对于普通的互联网用户,每个 CDN 节点就相当于一个放置在他周围的网站服务器。通过对 DNS 的接管,用户的请求被透明的指向里他最近的节点,节点中的 CDN 服务器会想网站的原始服务器一样,响应用户的请求。由于它离用户最近,所以响应时间也是更快。

从上面的图中我们可以得知虚线圈起来那块就是 CDN层,这层是位于用户端和站点服务器之间。

  • 智能调度 DNS

    智能调度 DNS 是 CDN服务中的关键系统,当用户访问加入 CDN 服务的网站时,域名解析请求将最终由 智能调度 DNS 负责处理。它通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户可以得到快速的服务。同时它需要与分布在各地的 CDN 节点保持童心,跟踪个节点的健康状态、容量等信息,确保将用户的请求分配到就近可用的节点上。

  • 缓存功能服务

    负载均衡设备

    内容 Cache 服务器

    共享存储

名词解释

CNAME记录(CNAME record)

CNAME 即别名(Canonical Name);可以用来把一个域名解析成另一个域名,当 DNS 系统在查询 CNAME 左边的名称的时候,都会转向 CNAME 右边的名称在进行查询,一直最总到最后的 PTR 或 A名称,成功查询才会做出回应,否则失败。

例如,你有一台服务器上存放了很多资料,你是用 doc.example.com 去访问这些资源,但又希望通过 documents.example.com 也能访问到这些资源,那么你就可以在你的 DNS 解析服务商添加一条 CNAME 记录,将 documents.example.com 指向 doc.example.com ,添加记录之后,所有访问 documents.example.com 的请求都会被转到 doc.example.com ,并得到相同的响应。

CNAME域名

接入 CDN 时,在 CDN 提供商控制台添加完加速域名后,您会得到一个 CDN 给您分配的 CNAME域名,您需要在您的 DNS 解析服务上添加 CNAME 记录,将自己的加速域名指向这个 CNAME域名,这样该域名的请求才会指向 CDN 的节点,以达到加速效果。

回源host

回源host 决定回源请求访问到原站上的具体站点。

例子1:源站是域名源站为 www.a.com ,回源host为 www.b.com ,那么实际回源是请求到 www.a.com 解析到的IP,对应的主机上的站点 www.b.com

例子2:源站是IP源站为 1.1.1.1,回源host为 www.b.com,那么实际回源的是 1.1.1.1 对应的主机上的站点 www.b.com

协议回源

指回源时使用的协议和客户端访问资源时的协议保持一致,即如果客户端使用 HTTPS 方式请求资源,当CDN节点上未缓存该资源时,节点会使用相同的 HTTPS 方式回源获取资源;同理如果客户端使用 HTTP 协议的请求,CDN节点回源时也使用HTTP协议。

axios 注册拦截器 cdn引用_CDN加速原理相关推荐

  1. axios 注册拦截器 cdn引用_PicGo+jsDelivr+GitHub搭建免费cdn加速的图床

    PicGo+jsDelivr+GitHub搭建免费cdn加速图床.下面是我写的教程. https://www.sakura521.cn/2020/03/13/picgocdn.html​www.sak ...

  2. 优优加速cdn带宽_cdn加速原理是什么,正常1m宽带服务器能提升多少速度-问答-阿里云开发者社区-阿里云...

    一张图说明CDN网络的原理 2013年07月25日 14:55:25 阅读数:52873 1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器 ...

  3. axios请求拦截器错误_React中使用高阶组件和axios的拦截器,统一处理请求失败提示...

    在前端开发中,判断边界条件和重要,通常我们要花费开发中的很大一部分时间做边界条件处理.发送ajax请求时,假设有这样一个需求: 每个页面发送ajax请求,如果请求失败,在页面上统一弹出样式一样的错误提 ...

  4. 仿京东APP分类页面(mvp模式+OkHttp封装工具类+拦截器+弱引用回收)

    仿京东APP分类页面: 添加依赖 compile 'com.android.support:recyclerview-v7:24.0.0' compile 'com.google.code.gson: ...

  5. 借助axios的拦截器实现Vue.js中登陆状态校验的思路

    在做Vue中的登陆校验时,思路应该是这样的:先确定一个路由页面是否需要登陆才能访问,如果需要,就需要用户登陆,如果不需要,用户直接可以访问. 那么,首先来说,后台系统中,不一定每一个页面都要进行登陆权 ...

  6. vue项目中 axios请求拦截器与取消pending请求功能 - 年少、 - 博客园

    在开发vue项目中,请求是不可缺少的,在发送请求时常常需要统一处理一些请求头参数等设置与响应事件,这时利用请求拦截器再好不过. 这里以axios请求为例 实现了设置统一请求头添加token, 其中to ...

  7. 前端学习(2708):重读vue电商网站28之通过axios请求拦截器添加 token

    通过axios请求拦截器添加 token,保证拥有获取数据的权限. 原因是,后台那边除开登录的 api,其它都需要进行授权 . 因此,我们可以利用 axios 中interceptors属性,其中有一 ...

  8. 前端学习(2707):重读vue电商网站27之通过axios请求拦截器添加 token

    通过axios请求拦截器添加 token,保证拥有获取数据的权限. 原因是,后台那边除开登录的 api,其它都需要进行授权 . 因此,我们可以利用 axios 中interceptors属性,其中有一 ...

  9. axios的拦截器(Interceptors)

    axios 的拦截器:interceptors 如果我们想在请求之前做点什么,用拦截器再好不过了 拦截器一般做什么? 1. 修改请求头的一些配置项 2. 给请求的过程添加一些请求的图标 3. 给请求添 ...

最新文章

  1. 非线性求解器Casadi使用简介
  2. Hello World!!
  3. CM: How is attachment version implemented
  4. xmm1是什么器件_数字电路实验指导书
  5. Spring Cloud Eureka(三)实现一个高可用的注册中心
  6. Machine Learning笔记(三) 多变量线性回归
  7. c#打印乘法口诀_小学数学所有公式和顺口溜都在这里了!建议家长收藏打印!...
  8. vs关于_CRT_SECURE_NO_WARNINGS警告说明
  9. 哪些场景应用了dsrc通信标准_如何提高量子通信系统的实用性,制约了量子通信系统的应用场景...
  10. RJ45网线水晶头的接法
  11. 洛谷入门-- P3717
  12. related_name
  13. 小黄鸡.Net版(Simsimi.Net)
  14. 大二网页制作实习总结
  15. 图像处理半色调技术(matlab/C++)
  16. YouTube深度学习推荐
  17. paypal付款,PayPal Subscribe和PayPal Check Out的区别
  18. 关于Linux的介绍与安装
  19. 制作PPT的5大秘密武器
  20. 如何快速读懂别人的项目

热门文章

  1. NETCONF YANG语言文件语法格式
  2. Linux虚拟网络设备之tun/tap
  3. [GitHub]一个简单的网络驱动
  4. C语言进程的内存地址空间分配
  5. Java中对Array数组的api展示
  6. centos7安装xterm_CentOS 7使用x-manager中Xstart工具报缺少xterm包错误
  7. python读取linux内存_使用python获取CPU和内存信息(linux系统)
  8. 对于局部变量_浅谈Shell函数中全局变量和局部变量
  9. OpenShift 4 - DevSecOps Workshop (10) - 向Stage环境部署应用镜像
  10. 计算机工作应用工作简历,计算机应用专业工作简历范文