CDN是一个致力于使内容传输更快、更高效的针对webserver的全局分布式网络。通过CDN来复制使这些内容能够在非常多地方同一时候存在。
比較有名的CDN厂商有AKamari,Amazon Cloudfont以及Edgecast。
为什么CDN会存在?最根本的原因...获得更好的用户体验。并且第二层优点是能够使网络资源更有效的被利用。
CDN主要使用双方面的技术来实现:
- 保持重要的内容分布在多个全局的分布式数据中心。从而使关键数据离终端用户更近,也使得下载起来更快。
- 使用基于内容类型的服务端优化技术能够使用户以最高效的方式获取须要的内容。
首先让我们看一下通常情况下webserver是怎样向用户浏览器数据传输的。
- 用户发出请求来下载一个web页面,这一般是通过点击一个链接来请求。
- 用户浏览器发送一个请求到webserver来请求对应内容。
- webserver開始回传所请求页面的全部内容。这通常包含很多独立的资源。
很easy的东西。
普通情况下,和用户请求相关的内容都会去同一个webserver上请求,而请求者(如:浏览器)则不关心所请求内容的位置和类型。对于真正的大型站点来说或许会有一个负载均衡的webserver池,可是再从普通情况来看,这些webserver都在同一个数据中心。
但 是在简单的表象之下,还有非常多事情要做。须要有一个DNS解析器来获取webserver的ip地址。webserver通常须要回传很多不同类型的内容到浏览器。 如:图片、JavaScript脚本、CSS、文本文件、视频以及页面包括的全部其它内容。
一个典型的web页面会包括非常多这种内嵌资源并且都会发送到 浏览器--通常有超过60个不同的文件要读取,有时在一个请求中会包括超过100个资源文件!此外。有的请求为了可以渲染出所请求的内容还须要浏览器去做 一些额外的请求操作。
我们能够将所请求的内容分成下面几种不同的类型:
- 动态内容:这些内容是由webserver通过如php,ruby或者java等web编程语言凭空生成的。
- 静态内容:这些内容一般是常常变化并且不须要生成。图片、CSS样式文件、javascript脚本文件都属于这类内容。
- 流媒体内容:视频或音频等须要浏览器来控制播放的文件。
这 些类型的文件差别太大以致于没有一个server可以非常好的为全部类型的文件提供服务。
每种类型的文件都有不同的要求和优化方式。动态内容须要占用server大量的 内存和CPU资源。却非常少占用带宽;静态内容和流媒体内容恰恰相反,占用相对较少的内存资源,却占用非常大带宽。假设非要在同一台server上来处理两个场景将 会使双方面都会变的更糟:webserver一方面要载入动态内容须要的内存,还有一方面为所须要的非动态内容做准备。至少对同一台server来说,这双方面不能同一时候 做到最好。
更通俗的解释:https://www.hkt4.com/news/idc-baike/991.html
原文地址:https://www.cnblogs.com/LeoCharlie/p/12309829.html