资讯专栏INFORMATION COLUMN

CDN小结

cod7ce / 3266人阅读

摘要:二目的是一个经策略性部署的整体系统,从技术上全面解决由于网络带宽小用户访问量大网点分布不均而产生的用户访问网站响应速度慢的根本原因。

一、CDN全称:
  Content Delivery Network或Content Ddistribute Network,即内容分发网络。

  二、目的:
  CDN是一个经策略性部署的整体系统,从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均而产生的用户访问网站响应速度慢的根本原因。
  基于此,CDN的特点可以说有
  1. 分布式存储
  2. 通过智能DNS解析或http重定向实现内容分发的负载均衡
  3. 全局负载均衡管理与内容管理

  三、网站的传统访问和使用CDN访问的对比

  传统的网站访问过程为:
    1. 用户在浏览器中输入要访问的域名;
    2. 浏览器向域名解析服务器发出解析请求,获得此域名对应的IP地址;
    3. 浏览器利用所得到的IP地址,向该IP对应的服务器发出访问请求;
    4. 服务器对此响应,将数据回传至用户浏览器端显示出来。

  与传统访问方式不同,CDN网络则是在用户和服务器之间增加Cache层,将用户的访问请求引导到Cache节点而不是服务器源站点,要实现这一目的,主要是通过接管DNS实现,下图为使用CDN缓存后的网站访问过程:

      

  使用CDN缓存后的网站访问过程演变为:
  1. 用户在浏览器中输入要访问的域名;
  2. 浏览器向域名解析服务器发出解析请求,由于CDN对域名解析过程进行了调整,所以用户端一般得到的是该域名对应的CNAME记录,此时浏览器需要再次对获得的CNAME域名进行解析才能得到缓存服务器实际的IP地址。
  注:在此过程中,全局负载均衡DNS解析服务器会根据用户端的源IP地址,如地理位置(深圳还是上海)、接入网类型(电信还是网通)将用户的访问请求定位到离用户路由最短、位置最近、负载最轻的Cache节点(缓存服务器)上,实现就近定位。定位优先原则可按位置、可按路由、也可按负载等。
  3. 再次解析后浏览器得到该域名CDN缓存服务器的实际IP地址,向缓存服务器发出访问请求;
  4. 缓存服务器根据浏览器提供的域名,通过Cache内部专用DNS解析得到此域名源服务器的真实IP地址,再由缓存服务器向此真实IP地址提交访问请求;
  5. 缓存服务器从真实IP地址得到内容后,一方面在本地进行保存,以备以后使用,同时把得到的数据发送到客户端浏览器,完成访问的响应过程;
  6. 用户端得到由缓存服务器传回的数据后显示出来,至此完成整个域名访问过程。

  四、CDN的优势:
  1. CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
  2. 大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。

  五、缓存
  首先,当网站没有接入CDN时,用户浏览器与服务器是的交互过程是:

  用户在浏览网站的时候,浏览器能够在本地保存网站中的图片或者其他文件的副本,这样当用户再次访问该网站的时,浏览器就不用重新全部下载的文件,提高了页面加载的速度。
  如果在这个过程中间加上一层CDN,那么用户浏览器与服务器的交互如下:

  客户端浏览器先检查本地缓存是否过期,如果已经过期,则向CDN边缘节点发起请求,CDN边缘节点会检测用户请求的数据的缓存是否过期,如果没有过期,则直接响应用户请求,此时完成一个http请求;如果请求的数据已经过期,那么CDN边缘节点还需要向源站发出回源请求(back to the source request),来拉取最新的数据。

  六、CDN用于前端性能优化
  1. 背景
  浏览器是根据域(Domain)来缓存内容资源的,只要域(Domain)不一样,那么即使是同一个资源,也需要重复下载,且使用同样的方式缓存起来,这就需要占用带宽和本地缓存空间。
  2. 应用
  1) 将静态资源缓存到离用户很近的相同网络运营商的CDN节点上。静态资源包含JavaScript脚本、CSS样式表、图片、图标、Flash等,但不包括html页面。这些资源的访问频率很高,将其缓存在CDN可以极大的提高网站的访问速度。
  如果服务器离用户更近,则HTTP请求和响应时间将缩短。
  不同地区的用户访问同一个域名能得到不同CDN节点的IP地址,这要依赖于CDN服务商提供的智能DNS服务,浏览器发起域名查询时,智能DNS服务会根据用户IP计算并返回离它最近的相同网络运营商的CDN节点IP。
  通过智能DNS服务获取最近的相同网络运营商的CDN节点IP后,不同地区的用户会向离自己最近的相同网络运营商的CDN节点发起请求,当请求达到CDN节点后,节点会判断自己的内容缓存是否有效,一个地区内只要有一个用户先加载资源,就会在CDN中建立缓存,该地区的其他后续用户都能直接读取缓存数据。

  2) 加载静态资源使用与页面不同的域名(不是用独立的二级或三级域名,而是用独立的一级域名)
  静态资源和主页面不同域,加载静态资源的HTTP请求就不会带上主页面中的cookie等数据,减少了数据传输量,节省流量,提升上传效率。

参考文章:
web网站加速之CDN技术原理
CDN与传统网站访问对比
一张图说明CDN网络的原理
CDN缓存那些事
浅谈前端性能优化(六)——CDN内容分发网络

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97187.html

相关文章

  • 阿里云有对手了!CDN横评:腾讯云优势明显

    摘要:腾讯云腾讯云支持全网加密传输,支持配置防盗链黑白名单单单节点限制等,抵御恶意用户。小结在特色功能上三家各有千秋,在数据分析等方面三家都具备,在安全性上阿里云和腾讯云不错,在简单易用方面腾讯云有优势。 如今,云计算产品越来越多,像国内的BAT三大巨头都提供了云主机(腾讯云CVM、阿里云ECS、百度云BCC),另外还有存储、数据库、安全等相关云服务。在这其中,CDN也是一项重要的云服务,C...

    Airy 评论0 收藏0
  • 【读书笔记】《高性能JavaScript》

    摘要:性能访问字面量和局部变量的速度是最快的,访问数组和对象成员相对较慢变量标识符解析过程搜索执行环境的作用域链,查找同名标识符。建议将全局变量存储到局部变量,加快读写速度。优化建议将常用的跨作用域变量存储到局部变量,然后直接访问局部变量。 缺陷 这本书是2010年出版的,这本书谈性能是有时效性的,现在马上就2018年了,这几年前端发展的速度是飞快的,书里面还有一些内容考虑IE6、7、8的东...

    chengjianhua 评论0 收藏0
  • 高性能JavaScript(文档)

    摘要:最近在全力整理高性能的文档,并重新学习一遍,放在这里方便大家查看并找到自己需要的知识点。 最近在全力整理《高性能JavaScript》的文档,并重新学习一遍,放在这里方便大家查看并找到自己需要的知识点。 前端开发文档 高性能JavaScript 第1章:加载和执行 脚本位置 阻止脚本 无阻塞的脚本 延迟的脚本 动态脚本元素 XMLHTTPRequest脚本注入 推荐的无阻塞模式...

    RayKr 评论0 收藏0
  • 高性能javascript小结

    摘要:高性能小结文章转载于我的博客最近看完了动物丛书的高性能,觉得那本书的小结部分写得非常不错,简洁轻快易懂概括性很强。由于局部变量存在于作用域链的起始位置,因此访问局部变量比访问跨作用域变量更快。 高性能javascript小结 文章转载于我的CSDN博客:http://blog.csdn.net/hello_world_20/article/details/46793317 最近看完了动...

    wujl596 评论0 收藏0

发表评论

0条评论

cod7ce

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<