还有还有一个问题就是全部的内容都放在同一个地方。假设我们的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. 很多其它文章请扫码:

CDN具体解释(篇二)的更多相关文章

  1. Android开发之异步具体解释(二)之AsyncTask

    请尊重他人的劳动成果,转载请注明出处:Android开发之异步具体解释(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  4. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  5. SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行)

    前言 上一篇我们分析了查询Hint的用法,作为调优系列的最后一个玩转模块的第一篇.有兴趣的可以点击查看:SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行) 本篇继续玩转模块 ...

  6. php基础篇-二维数组排序 array_multisort

    原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...

  7. C蛮的全栈之路-node篇(二) 实战一:自动发博客

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...

  8. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

  9. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  10. CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)----002

    原文链接:https://blog.csdn.net/cyq1162/article/details/53303390 前言说明: 本篇继续上一篇内容,本节介绍所有相关查询的使用. 主要内容提要: 1 ...

随机推荐

  1. mysql创建新用户

    如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可. 以下为添加用户的的实例,用户名为qi,密码为python,并授权用户可进行SELECT,INSERT ...

  2. 日常[系统]:Linux新人报到(吐槽%&%……&¥……%

    昨天换了系统,从win7换到了NOIP必须面对的Linux系统. 不得不说,真的很不适应.原本右上角的三个按钮变到了左上角. 可爱的DEVCPP被无情的抛弃了. 又用不惯guide,只好用文本编辑器写 ...

  3. ASP.NetCore 错误 NU1605 检测到包降级: Microsoft.Data.Sqlite 从 2.2.1 降级到 2.1.0

    找到使用的.csproj文件 将 <PackageReference Include="Microsoft.Data.Sqlite" Version="2.1.0& ...

  4. 最近公共祖先-三(RMQ-ST)

    描述 上上回说到,小Hi和小Ho使用了Tarjan算法来优化了他们的"最近公共祖先"网站,但是很快这样一个离线算法就出现了问题:如果只有一个人提出了询问,那么小Hi和小Ho很难决定 ...

  5. ZooKeeper运行原理和基本编程接口

    什么是ZooKeeper  ZooKeeper作为一个分布式的服务框架(与Google Chubby类似),主要用于解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数 ...

  6. PHP将数据库的数据转换成json格式

    header('content-type:application/json;charset=utf8');  $results = array();     while ($row = mysql_f ...

  7. 解决mysql - 1577 问题

    背景:通过navicat连接mysql使用events时报如下错误 登录mysql查询event mysql> use zhk4; Database changed mysql> show ...

  8. (十七)python 3 函数递归

    递归函数 即自己调用自己,递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件 优点:使用递归时,常常可以让代码更加简洁 缺点:递归会占用比较多的内存,当递归次数比较多时,性能 ...

  9. luogu2633 Count on a tree

    主席树放到树上而已 #include <algorithm> #include <iostream> #include <cstdio> using namespa ...

  10. 为应用指定多个struts配置文件

    在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿.为了避免struts.xml文件过于庞大.臃肿,提高struts.xml文件的可 ...