认真了解一下CDN

CDN的基本工做过程
CDN——到底用仍是不用?
项目中会看到不少CDN存储,也听大神们经常提及咱们什么什么资源是存储在CDN上的,一直处于只知其一;不知其二的状态,本着求知的精神,专门去查了一下,终于了解这是个什么东东。jquery

为何要用CDN?

  • 浏览器从服务器上下载CSS、js和图片等文件时都要和服务器链接,而大部分服务器的带宽有限,若是超过限制,网页就半天反应不过来。而CDN能够经过不一样的域名来加载文件,从而使下载文件的并发链接数大大增长。浏览器

  • jquery一类的库文件被普遍使用,若是访问你网站的用户的浏览器以前在访问别的网站时经过和你相同的CDN已经加载了jquery,因为该文件已经被缓存了,就不用从新下载了。缓存

  • CDN具备更好的可用性,更低的网络延迟和丢包率。安全

  • CDN能提供本地的数据中心,这样一来,那些远离你网站主服务器的用户也能就近很快地下载文件。服务器

  • 不少商业付费的CDN能提供使用报告,这能够做为你本身网站分析报告的补充。网络

  • CDN可以分配负载,节省带宽,提升你网站的性能,下降网站托管的成本,一般是免费的。并发

CDN的不足

  • 在开发阶段若是处在断网环境下,CDN文件是没法加载的。负载均衡

  • 不够灵活。好比你只使用jquery库的一小部分,若是使用CDN上提供的文件就没办法进行拆分,仍是得下载原来的大小,反而没有本身拆分后加载速度来得快。分布式

  • 尽管一些流行的CDN文件事先缓存过的概率较大,但并非必定的,一些移动设备的缓存可能很小并且效率很低,CDN的优点就不明显了,特别是当你能够在本地服务器上存放比CDN文件更小的文件时。性能

  • 因为地理、法律、政策和商业上的阻隔,你所在的地区可能屏蔽了一些流行的免费CDN服务的域名或者IP地址。

  • CDN会有出故障的时候,这时候要有备用方案,也就是你的本地文件,这种处于稳定考虑的冗余会增大开发工做量和复杂度。

  • 若是安全性对你的网站很重要,就不要使用公共的CDN,由于当你远程从CDN请求文件时,你的访问来源信息也被发送过去,一些远程的js文件可能被修改用来搜集你的用户或者系统信息,而当你使用https协议时,能选择的CDN就更加有限。

CDN的主要内容

  • “分布式存储”:CDN也叫内容分发网络。将中心平台的内容分发到各地的边缘服务器,使用户可以就近获取所需内容,下降网络用赛,提升用户访问响应速度和命中率。利用了索引、缓存等技术。

  • “负载均衡”:对全部发送的请求进行访问调度,肯定提供给用户的最终实际访问地址。

  • “内容管理”:负责对存储内容的监管、数据分析等。

传统网站的访问过程:

  • 用户在本身的浏览器中输入要访问的网站域名。

  • 浏览器向本地DNS服务器请求对该域名的解析。

  • 本地DNS服务器中若是缓存有这个域名的解析结果,则直接响应用户的解析请求。

  • 本地DNS服务器中若是没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,得到应答后将结果反馈给浏览器。

  • 浏览器获得域名解析结果,就是该域名相应的服务设备的IP地址。

  • 浏览器向服务器请求内容。

  • 服务器将用户请求内容传送给浏览器。

加入CDN后的访问过程

  • 当用户点击网站页面上的内容URL,通过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器

  • CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

  • 用户向CDN的全局负载均衡设备发起内容URL访问请求。

  • CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

  • 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载状况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析以后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

  • 全局负载均衡设备把服务器的IP地址返回给用户。

  • 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。

CDN的使用方法

能够在七牛云、阿里云等申请存储空间,将须要存储的文件上传,就能够获取到文件对应的一个域名。

相关文章
相关标签/搜索