理解记忆 CDN

Posted Valar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解记忆 CDN相关的知识,希望对你有一定的参考价值。

CDN 是什么?
CDN——Content Delivery Network,内容分发网络,具体来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。(有点像电商的本地仓吧?)

为什么要使用 CDN ?

一、加速了内容的访问——用户与内容之间的物理距离缩短,用户的等待时间也得以缩短
二、从 webpack 抽离一些巨大的且版本更新不频繁的库,如 Vue Elementui,以减少 build 时的打包体积, 改为在 index.html 中使用 <script> 引用
三、有些大型网站,访问用户太多,而服务器有并发限制,不得不分发一些流量到其他的服务器,另外有看到,可以把整个网站都做cdn加速,也就是把html也做cdn缓存,弊端太大,不太理解为什么要这么做

哪些文件可以使用 CDN ?
一般的静态文件,.js .css,视频,apk
图片,我司用oss存储,不知道oss算不算 cdn
有些网站,html 也使用 cdn

怎么使用 CDN ?
如果是加速普通的 .js .css文件,那么直接找个cdn服务商就行了,例如 jsDelivr,bootcdn,对于加速网站,也就是给html做cdn,那么就需要去购买www.showapi.com域名的地方,去他们的后台管理系统里修改cname,以便达到用户访问 www.showapi.com,会转发到www.xxxcdn.com,

为什么是购买域名的地方?
准备:实际上,我们的网址应该为test.baidu.com . ,注意看后面有个 点 ,只不过浏览器为了方便用户都给省略了。
比如解析test.baidu.com. ,是具体怎么解析成IP地址的呢?可以形容为,从右向左

. -> .com -> baidu.com. -> test.baidu.com

浏览器解析dns是逐层的,
其次:

检查浏览器缓存,(chrome://net-internals/#dns)
检查操作系统dns缓存 windows系统中,命令行 ipconfig/displaydns 查看,linux上的NSCD缓存服务;
从计算机hosts文件中查找
检查路由器缓存
如果前几步都没没找到,会向ISP(网络服务提供商)的LDNS服务器查询,ISP也就是域名提供商,我们在这里设置cname映射即可,
如果LDNS服务器没找到,会向根域名服务器(Root Server)请求解,流程分为以下几步:
先找根域名服务商所在的ip,即最后面那个.
根服务器返回顶级域名(TLD)服务器如.com,.cn,.org等的地址,全球只有13台,该例子中会返回.com的地址
接着向TLD发送请求,然后会返回次级域名(SLD)服务器的地址,
接着向SLD域名服务器通过域名查询目标IP,
Local DNS Server会缓存结果,并返回给用户,缓存在系统中。

那么,设置了cdn以后的流程,
就是把www.showapi.com重定向到www.xxxcdn.com,继续走一遍上面的流程,最后会走到xxx.cdn的dns服务商上,并且返回一个经过负载均衡系统计算过的存有资源的ip地址给浏览器,浏览器会把这个ip放到浏览器dns缓存,下次直接使用

关于什么是cname,这是dns里面的一个知识点,文末有扩展阅读的链接,这里简单解释一下,就是说,我们访问一个域名时,实际上是访问一个ip地址的,那么域名和ip是不是一对一呢?不是的,是一对多,一个域名可以对应多个ip,一个域名与一个ip这样的映射关系,成为A记录,会有多个A记录,cname优先级比a记录更高,所以可以做到重定向,ns记录是下一级别的dns服务器的信息,比如.com的dns服务器会返回show.com的dns服务商地址,这些地址就存在ns里

以上是关于理解记忆 CDN的主要内容,如果未能解决你的问题,请参考以下文章

直观理解LSTM(长短时记忆网络)

第192天:CDN缓存的理解

CDN的简单理解

快速理解CDN的加速原理

如何理解CDN加速网站访问的工作原理和作用?

谈谈我从工作中理解的CDN