泰安网站建设优化,wordpress手机端主题插件,建站平台详细教程,蒙城网站建设转载自#xff1a;CDN是如何工作的#xff1f; CDN是互联网中使用较频繁的一种技术。你也许常听人说#xff1a;“我们的网站使用了CDN技术”#xff0c;但可能他们对CDN的了解并不多#xff0c;也许只局限于--用了以后网站访问速度会变快。 其实#xff0c;CDN的原理非常…转载自CDN是如何工作的 CDN是互联网中使用较频繁的一种技术。你也许常听人说“我们的网站使用了CDN技术”但可能他们对CDN的了解并不多也许只局限于--用了以后网站访问速度会变快。 其实CDN的原理非常简单。当浏览器请求一资源时第一步是做DNS解析DNS解析就像是从通讯录根据姓名找号码浏览器发送域名然后得到DNS服务器返回的IP地址。浏览器通过IP地址和服务器连接并获取资源DNS服务器会有很多层的缓存但超出本文范围。 对于小站点或个人博客一个域名对应一个IP地址而大站点可能含多个IP地址。 当请求一个资源时如网站距离会影响连接速度所以从国内访问国外的网站比较慢。因此一些大公司在世界各地配置服务器并同步数据这就叫CDN而那些离当地用户最近的服务器叫“边缘服务器edge servers”。 DNS解析 当浏览器通过CDN做域名解析请求时针对单IP的网站会有一些不同。DNS服务器会找出最适合的服务器来处理请求而且非常简单DNS会找出离请求地点最近的边缘服务器。如下图所示,如果我从维吉尼亚州发送一个指向美国中部服务器的请求就会得到位于东海岸的边缘服务器地址如果我从加利福尼亚州发送请求就会得到位于西海岸的边缘服务器地址。 也就是说处理请求的第一步找出离请求位置最近的服务器。有些公司可能会用其他的方式优化CDN服务器例如如果最近的服务器满负荷运作那么接下来的请求就会转到其他闲置的服务器。总之CDN总会找出最适合的服务器来处理请求。 获取内容 边缘服务器是一种代理缓存类似浏览器缓存。当请求到达边缘服务器它会首先检查内容是否是最新的。缓存标识key就是整个Url地址跟浏览器一样如果内容已被缓存且没有过期就直接返回缓存内容。 如果没有缓存或已过期边缘服务器会向源服务器发送请求获取内容并缓存起来。 雅虎创建了一个开源项目叫Apache Traffic Server用来管理CDN直接的交互如果想了解更多代理缓存的原理推荐你读一下这个项目的文档。 示例 雅虎的CDN服务中使用一个工具叫“组合处理器combo handler”它会把多个文件的请求整合到一起变成一个请求-响应操作。下面是例子 http://yui.yahooapis.com/combo?3.4.1/build/yui-base/yui-base-min.js3.4.1/build/array-extras/array-extras-min.js 域名yui.yahooapis.com是雅虎CDN服务的一部分会把你的请求转给离你最近的边缘服务器这个请求包含两个文件yui-base-min.js和array-extras-min.js但只需一次响应便可完成。这些逻辑处理操作不在边缘服务器只能在源服务器上。 静态指的是什么 每当我描述类似上文的“组合处理器”之类的系统时经常会看到别人困惑的表情。CDN有时候容易跟FTP资源混淆因为它们都是上传静态资源供其他人获取。我希望我上文的描述能让大家搞清楚两者不一回事。边缘服务器是一个代理源服务器告诉边缘服务器返回什么内容源服务器可能是JavaRubyNode.js.Net等因此可以实现任何逻辑。边缘服务器什么也不做只是发生请求并返回内容。 既然CDN如此高效为什么不把网站所有东西都用CDN来提高性能CDN本质是缓存如果保存的是动态页面每次页面内容都会有所变化那么每次请求都要和源服务器交互一次那么这个缓存也就没有意义。 这也是为什么Javascript,CSS,images,Flash,音频视频等文件特别适合使用CDN技术因为这些文件是不变的所有的用户获取的都一样一旦通过CDN缓存所有用户都受益。 缓存过期 雅虎性能指南规定静态资源应该要有缓存过期标识保存在Http协议的header中这么做有两个原因第一浏览器会把资源缓存一段时间第二CDN会将资源缓存一段时间。这就意味着你不能使用重复的文件名因为他们至少会被缓存在两个地方用户可能会一直获取不到最新版本的文件。 有几种方式解决这个问题YUI 库用包含不同版本库的目录来区分。通常也可以在文件名末尾加入标识符如MD5的哈希值或者版本控制软件的修订号。任何一种继续都为了确保当用户的请求包含过期标识的时候依然能获得最新版本的文件。 结语 CDN技术已经是当今互联网重要的一部分随着时间的推移它只会变得越来越重要。即便是现在一些公司仍然努力尝试把更多的功能移到边缘服务器以便能给用户更快速的体验。这里包含了一种技术叫Edge Side Includes (ESI),用来缓存页面的部分内容。 更好的理解CDN技术及工作原理是提升CDN性能的关键。 原文http://www.nczonline.net/blog/2011/11/29/how-content-delivery-networks-cdns-work/ 注这是我第一次翻译英文文章花了比想象中要多的时间如果看完文章对你有帮助是我最大的欣慰不足的地方欢迎批评指出。 谢谢浏览转载于:https://www.cnblogs.com/Music/archive/2012/03/12/cdn-how-to-work.html