云时代,如何利用CDN服务为海外用户访问国内网站加速
本文Blog地址:http://www.cnblogs.com/taosha/p/6760079.html,您可以自由转载,请保留出处,谢谢配合!
众所周知,海外用户访问国内网站速度都不尽人意,主要原因是地理距离比较远,中国到海外的Internet出口带宽有限且中间还隔着"长城防火墙"。那我们有什么办法可以来加速海外用户对国内网站的访问速度么?答案就是CDN服务。本文主要就是介绍CDN服务提高海外客户访问国内网站的加速原理,海外CDN选择,快速配置以及问题释疑三个部分。
- 加速原理:
CDN全称Content Delivery Network,中文为内容分发网络,基本思想是将客户要访问的数据尽可能地缓存到离客户最近的网络节点上。
没有CDN时,海外客户访问国内网站是这样的,海外客户的每次访问都必须从国内网站服务器读取数据,图片等内容。如下图
有了CDN后,CDN网络自动把用户需要访问的网站文件Cache(缓存)到离客户最近的CDN节点上,这个过程是CDN网络智能判断和完成的,不需要客户人工介入,如下图:
对上图做一个解释,我们国内的网站经过CDN服务后会自动(主动/被动)同步到全球的CDN节点,这样当海外客户再访问国内网站时,CDN系统会智能将客户的访问引导到访问速度最快的CDN节点上,从而大大加快客户的访问。这个示意不是特别严谨,如果大家希望特别深入的了解CDN工作机制的话,建议大家可以阅读:http://baike.baidu.com/item/CDN/420951?fr=aladdin 以及其他文档,网上非常多,这里不做详细介绍。
- 海外CDN的选择,
如上图来看,我们可以发现CDN有几点特别重要:
- 节点的数量和分布;
- 智能系统的判断和路由;
- 支持CDN的内容,比如是否静态网站,图片,视频,流媒体等;
- 价格
针对国内网站出海来看,可以如下三种选择:
方式 |
优点 |
缺点 |
自建CDN |
服务成本低,质量可控 |
建设成本昂贵 |
专业CDN提供商 |
节点多,服务好 |
量少时无议价空间,服务成本高 |
云厂家CDN |
节点够用,配置简单 |
价格便宜,按使用付费 |
如果你只是中小客户的话,我推荐云厂家提供的CDN服务,配置简单,节点够用,性价比高。目前可以提供云CDN服务的厂家无外乎微软的AZURE和亚马逊的AWS,这里仅以微软Azure为例。微软Azure是全球云计算供应商领导企业,提供了数百种云计算服务,完全可以满足国内客户开拓海外业务使用。
- Azure CDN配置方式
首先您得有个Azure账号,Azure可以在www.azure.com上去申请,绑定信用卡后按使用量后付费。
配置步骤如下:
第一步,配置CDN 配置文件;
第二步,配置CDN终结点;
第三步,修改DNS中的CANME记录;
第四步,配置自定义域名
第一步,配置CDN配置文件:
如上图,先配置一个CDN配置文件/Profile,资源组和资源组位置随意,三种定价标准如下图:
如果是纯静态网站,推荐大家使用S1 Verizon Standard,如果需要设置CDN规则,建议使用P1 Premium Verizon,CDN都是按照流量来收费,但是因为功能强大,高级版显然会比标准版贵一些。配完后应该如下图:
第二步,配置终结点:
说明:
Name是CDN节点名,比如我输入cdndemo,那么节点名就是cdndemo.azureedge.net;
Origin type(原点类型),如果是对自有网站加速,选择Custom origin;
Origin hostname,填写你的源网站的公网IP或者主机名,比如65.52.189.183,不要加http:// 的前缀。
特别提示(此处有坑):Origin hostname 中文会翻译成原点主机,会让人有点莫名其妙,但实际上是让您填写国内网站公网IP或者网站服务器主机名,千万不要填成国内网站域名,那样会在后面DNS配置中形成死循环导致网站无法访问。
Origin path和Origin host header可以留空,不用填,协议可以单选HTTP或者HTTP和HTTPS都选择。
创建完成后如下图:
配置完成后,CDN节点会把http://65.52.189.183 网站内容Cache到终结点即http://fr-renesola.azureedge.net ,这会花费大约几十分钟的时间。
第三步,在DNS系统中增加CNAME记录
打开客户的域名管理系统,增加一条CNAME记录,主要是将原来的网站URL指向到Azure
CDN的终结点,即XXX.azureedge.net。
特别提示(此处有坑):域名系统中一般有A记录或者CNAME记录,A记录会优于CNAME记录,所以您需要删除A记录,主机纪录是您的国内网站地址,记录值是Azure CDN的终结点XXX.azureedge.net. (注意最后有一个点 . ,不要漏了)。这一条CNAME的作用就是将原先访问国内网站的url导向Azure CDN的终结点。相当于在客户和源网站之间增加了一个CDN缓存层。至于客户去访问CDN网络中的哪一个节点,我们在原理中已经说过,智能CDN自动去判断并将客户指向到速度最快的节点。
第四步,设置自定义域名(必须)
在终结点页面中,增加自定义域名(Custom domain),主要是让智能CDN系统识别您的国内网站地址。在内部建立国内网站地址和Azure CDN终结点的对应关系。
Custom hostname就是源URL,即国内网站访问地址。
特别提示(此处有坑):此处必须设置,否则你会发现,你可以访问XXX.azureedge.net,但是从国内地址无法访问到终结点,会一直显示打不开网站页面。
上面四步做完,您可以完成了一个国内网站在全球的内容分发,您会发现不论您的客户在全球哪一个角落,他都可以快速的打开您的国内网站。
- 问题释疑
上面步骤只是做了一个简单的演示,在实际使用中,客户往往还会有个性化需求,比如:
问:是否可以只Cache图片,视频等静态元素
答:完全可以,选择P1 Premium Verizon,在规则引擎中设置规则,譬如:
上图仅为示例,aspx、asp、php等动态页面不做CDN缓存,mp4和wmv做CDN缓存,这样确保客户访问时可以得到网站动态信息。
问:网站返回页面链接有字符串时如何处理?比如http://xxxxx?id=1,id=X不同值代表不同的Session。
答:可以在Cache设置中不缓存查询字符串,不同用户得到不同的访问链接。