CDN是什么?一分钟带你了解CDN

  • 前言
  • CDN简介
  • 基本原理
  • 文件资源的引用
  • 形象理解CDN
  • 带宽与延迟
  • 总结

前言

记得刚刚开始学习Bootstrap,发现一些文章中总是提到使用CDN。HTML文件头的引用,以及常有其他文件引用,比如CSS以及JS的引用。
例如下面这个:

  <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"><script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script><script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>

其中就有对CDN的引用。当时也就没怎么在意,可是过了一段时间后,当我又重新看到了这个一直困扰着我的问题。我想着:为什么要应用CDN呢?这个CDN服务是必须的吗?我的系统都是在内网里面使用,与Internet不联通,还需要CDN吗?

CDN简介

百度给出CDN的解释

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
属性:
一种新型网络构建方式
目的:
传输的更快、更稳定全

基本原理

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

简单来说,CDN就是一个分布式的缓存服务器,存着非常多文件,并且分布在世界各地,每个人都能就近访问。

文件资源的引用

所以我们就很好理解了
像这种形式的:

<script src="/js/bootstrap.min.js"></script>

就是外部脚本文件的一个链接,当前的这种链接是相对URL,指向站点内的文件,即你本项目里对应路径下面放置的文件。

我们可以知道,URL的引用有两种方式,绝对引用相对引用,绝对的方式就是直接引用其他站点的js地址,比如我把上方的引用改为这种样子的:

<script src="https://cdn.bootcss.com/twitter-bootstrap/4.4.1/css/bootstrap-grid.min.css"></script>

即是引用其他站点的js文件。

形象理解CDN

我再举一个通俗的例子来说明:假设有两家除了位置其他完全一致的超市,一家离你的住所很近,另一家很远,那么你会选择去哪一家?一般人都会选去近的那家,对吧?CDN服务器就相当于是离你近的那家超市。

带宽与延迟

当然,CDN也可以用来做一些边缘计算,处理一些动态资源。网络不是四通八达的么?为什么需要CDN呢?

这就得提到一关键词 带宽
举个例子,如果我们原本要连接的服务器在国外,那么因为出口带宽有限等因素,连接质量会很差、下载速度也变慢。而如果是在国内有一台同样内容的服务器,就可以直接连接到这台国内服务器上,以更快的速度和更好的连接质量来获取内容。

其次,比如原本1000个人连接到一台带宽为100Gbps的服务器上面进行下载,平均每个用户只能分到0.1Gbps的带宽,速度就非常慢;而用CDN,原本一台服务器变成多台拥有相同内容的服务器,用户被分散到不同的服务器上面去进行下载,平均每个用户能够分到的带宽就会得到明显的提高。

在计算机网络中就像木桶最短的木板,带宽最小的那一块决定了你去服务器拉取数据的最大速度。

另一个关键词 延迟
据某研究(关于人脑在等待不同时长的信息时,产生的不同意识行为,进而对信息获取产生的差别感官体验。)报道:
0.1 s: 用户几乎感觉不到系统是否不连贯性。
1.0 s: 用户明显注意到时延的发生,但是在该时间内思维依然是连贯的。
10 s: 超过该时间的时延会使用户失去等待意愿。

控制时延无疑是现代信息科技的重要指标,CDN的意图就是尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。

总结

所以说,CDN的本质上是将媒体资源,动静态图片,HTML,CSS,JS等等内容缓存到距离你更近的IDC,从而让用户进行共享资源,实现缩减站点间的响应时间等等需求,而网游加速器的本质则是通过建立高带宽机房,架设多节点服务器来为用户进行加速。

在某乎上看到一句话觉得挺好的,就作为CDN的总结吧: CDN的本质是缓存,而内核中支撑它的互联网精神则是共享。

附上链接:BootCDN官网

小伙伴们,强烈安利一波

CDN是什么?一分钟带你了解CDN相关推荐

  1. 5分钟带你走进webpack

    5分钟带你走进webpack webpack 开始表演(哇卡卡) React & Webpack 布置项目 初始化项目 安装我们的环境 添加TypeScript配置文件 写一些代码 创建一个w ...

  2. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学

     视学算法报道   编辑:小咸鱼 好困 [新智元导读]你有见过160多年前清朝数学家写的微积分书吗?这可能是最难懂的高数教材了,堪称天书!近日,网上流传着一本清朝的微积分课本,其中的所有数学表达式都是 ...

  3. java编程石头剪刀布图片_石头、剪刀、布!10分钟带你打开深度学习大门,代码已开源...

    原标题:石头.剪刀.布!10分钟带你打开深度学习大门,代码已开源 沉沉 发自 宇宙中心 量子位 出品 | 公众号 QbitAI 深度学习技术的不断普及,越来越多的语言可以用来进行深度学习项目的开发,即 ...

  4. mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区

    原标题:三分钟带你分清MySQL 和Oracle之间的误区 来自:华为云开发者社区 摘要:MySQL和Oracle,别再傻傻分不清. MySQL 和Oracle 在开发中的使用是随处可见的,那就简单去 ...

  5. 干货:五分钟带你看懂NestedScrolling嵌套滑动机制

    Android NestedScrolling嵌套滑动机制 Android在发布5.0之后加入了嵌套滑动机制NestedScrolling,为嵌套滑动提供了更方便的处理方案.在此对嵌套滑动机制进行详细 ...

  6. vi 查看最顶部_5分钟带你进入 Vim 大门,让你喜欢 Vim

    原标题:5分钟带你进入 Vim 大门,让你喜欢 Vim 来自:Linux迷 链接: https://www.linuxmi.com/vim-zhinan.html 打算在Linux上使用Vim文本编辑 ...

  7. c++ map用法_Python专题——五分钟带你了解map、reduce和filter

    点击上方蓝字,和我一起学技术.今天是Python专题第6篇文章,给大家介绍的是Python当中三个非常神奇的方法:map.reduce和filter.不知道大家看到map和reduce的时候有没有什么 ...

  8. 太好了,一分钟带你分清Python的模块、库、包有什么联系和区别?

    Python的流行主要依赖于其有众多功能强大的库(Library),Python自带的标准库(Standard Library)可以满足大多数的基础需求,除了函数库以外,模块(Module)和包(Pa ...

  9. 一分钟带你看懂UML图

    一分钟带你看懂UML图 小小demo package Test;/*** @Description:* @ProjectNmae: demo1* @PackageName: Test* @ClassN ...

  10. getvalue参数计数不匹配_OpenCV开发笔记(六十八):红胖子8分钟带你使用特征点Flann最邻近差值匹配识别...

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

最新文章

  1. K-Means ++ 算法
  2. 一程序员被判 9 个月:因薪酬等问题离职,rm -f * 删库,瘫痪 6 个小时
  3. 基于Prometheus+Grafana监控SQL Server数据库
  4. Oracle 12c 新特性:SQL Plan Directives与过量的动态采样解析
  5. vue 点击div 获取位置_vue接入腾讯位置服务之点击事件
  6. minheight能继承吗_遗嘱中的房屋被拆迁,指定继承人能继承对应的拆迁款或安置房吗?...
  7. Redis系列(三)-Redis发布订阅及客户端编程
  8. paip.图形化编程厉器.net vs2010 工作流WF4 hello word
  9. 浪潮服务器显示一个红色闪电图标,华为手机开不了机,只显示一个红色圆圈里面一个红色闪电符号...
  10. 实验四 木马的远程控制和清除
  11. 【新手必看】C语言开发环境,请查收!
  12. python中sample是什么意思_【后端开发】python中的sample什么意思
  13. HDU 6130 Kolakoski
  14. pfamscan 的使用_InterProScan的使用教程
  15. python 发送outlook邮件(html)格式需要避的坑
  16. 5G时代的来临,我们应该做好哪些网络安全准备?
  17. 呼伦贝尔~根河~鄂温克族
  18. DevOps实战:版本管理实践指南
  19. 前端面试官问Promise,怎样回答拿高分
  20. adobe reader 支持词典取词

热门文章

  1. java繁体转简体包,java繁体转简体
  2. 7个最佳博客名称生成器,可帮助您找到好的博客名称提示
  3. 赵小楼《天道》《遥远的救世主》深度解析(45)肖亚文为什么最后能成为最大的受益者?
  4. List集合按数量分组
  5. 330tsl是什么意思_19款探岳330tsl两区豪华型怎么样?
  6. C语言嵌入式数据结构之链表
  7. 面试拿到外包公司offer该不该去?!
  8. JDK8新特性之Stream流【小白快速上手,没有技巧全是实操-LOL英雄类讲解不失趣味】
  9. Windows 7驱动自动安装设置及手动更新方法
  10. 【云驻共创】当HarmonyOS走进课堂是种什么体验