还有还有一个问题就是全部的内容都放在同一个地方。假设我们的server在芝加哥,那么美国中西部的人们訪问server的响应时间和用户体验就比香港、德国、南非以及佛罗里达州的用户好。由于那些用户离server的物理距离更远,依据物理定律来看。这些用户获取内容显然须要更长时间。这加大了请求的数量,并且当中大部分请求为静态内容或者是占用大量带宽的文件的请求。
单个字节的数据以server为原点传输到终端用户所花的时间被称为“往返时间”(round trip time)或者称作延迟(以毫秒为单位)。
假设我们先要更快的传输网页内容,那么我们最想要的事情也就是尽可能低的延迟。或许,毫秒听起来并非什么大问题。可是,假设你意识到一个典型的web页面有1M或者更大并且还包括很多单独的文件。那么请求页面所花费的毫秒数将添加。
延迟对于移动内容提供商来说是个更大的问题。由于手机网络本质上要比陆基网络延迟高的多。
虽然4G总是宣传有更大的带宽。但并不意味着有更低的延迟(这是两个全然不同的网络指标)。
为了说明两者的不同。我从3个不同的设备上訪问DBS中某一台server。得到结果例如以下:
-
DBS办公室的快速商业类10M网络环境下:12毫秒(最好)
-
AT&T公司的18兆U-verse家庭网络环境下:69毫秒
-
我的安卓4G智能手机(Verizon):180毫秒(最差)
以上说明。带宽和延迟没有不论什么关系。
最好的情况比最差的情况快15倍,我们全部人中大多数人也都会选择比平均水平更快的网络去连接。
3G网络的延迟更高。往返时间(RTT)高达400毫秒。
同一时候,手机网络也更easy丢包(还有一个网络度量),这会从根本上减少性能。
所以。移动网络假设想要接近桌面程序的响应速度则须要採取一些更积极的优化策略。
因此,或许你正在一而再再而三的考虑这之间真的有这么大差别吗?眼下。已经有很多来自谷歌、雅虎以及其它公司的研究表明。每载入一次额外的第二个页面会有10%的转化率的下降。
再次强调,时间就是金钱。
CDN就是为解决上述提到的全部问题而存在的。
通过CDN,延迟有效的减少了,并且内容以更有效的方式传输。
CDN并非新的东西,在拨号上网的年代就已经存在,仅仅只是在非常长一段时间里仅仅是被像雅虎、YouTube这种大站点使用。
可是眼下。CDN变得越来越easy构建也使得小规模的用户也能够使用。
可是,CDN适用于全部情况吗?不是。实际上,CDN在非常多时候被过度使用了。
假设一个小型组织的用户都是当地用户,那么使用CDN效果就会非常小;并且使用CDN的成本可能会大于收益。
那么。谁应该考虑使用CDN:
-
内容提供者的用户是分本在整个国家的或者期望针对整个国家或国际用户
-
提供的内容须要非常高的带宽
-
移动内容提供商
CDN不是万能的。它不能明显加快在主要托管环境或者应用配置等基础设施方面有问题的站点的訪问速度。
CDN仅仅有在其它潜在的性能问题都被解决的情况下才干得到最高效的使用。
CDN成本怎样?
大部分成本是在建立和管理这样的类型的托管环境。
并且因为额外的复杂性,也会潜在的使配置和管理资源方面花费很多其它时间。
(全文完。。。)
1. 本文由程序猿学架构翻译
2. 本文译自Performance Blog: Content Delivery Networks (CDN) Explained
3. 转载请务必注明本文出自:程序猿学架构(微信号:archleaner )
4. 很多其它文章请扫码: