Azure的内容分发网络给开发者提供了一个全球范围的托管于Azure的高带宽内容网络。它使用起来非常简单,http://msdn.microsoft.com/en-us/library/windowsazure/ee795176.aspx详细阐述了其怎么使用。下面主要描述Azure CDN的一些关键特性:
1. CDN节点地理位置
CDN提供了比Azure其他服务多的多的服务地点,涉及到了美国,南美,欧洲,中东,东亚,东南亚等区域。基本上覆盖了全球主要地区。http://msdn.microsoft.com/en-us/library/windowsazure/gg680302.aspx列出了所有CDN节点位置。任何一个CDN服务只要创建了,就会在所有CDN节点上都生效,覆盖全面的CDN节点为全球范围的用户体验提供了保障。
2 CDN的内容源
在创建CDN服务(Endpoint)的时候需要指定内容的来源,CDN的内容可以从Azure storage里获取,也可以从Cloud Service里获取。如果源是storage,那么该storage的public的blob container里的内容都会作为CDN的内容源,注意必须是public的,而且只能是blob;如果源是Cloud Service,那么该Cloud Service必须在80端口下提供一个http服务,并且把内容放在/cdn目录下。如果源是Cloud Service,还可以设置是否考虑HTTP地址的Query String部分,如果考虑的话,CDN会把Query String也转发给Cloud Service,Cloud Service可以根据不同的Query string返回不同的内容,但也有一个注意点,在后面会提到。
3. 创建CDN服务有一定延迟
新创建的CDN服务(Endpoint)并不会立刻生效,Azure必须把这个Endpoint同步到CDN节点才能让其生效。同步是按CDN节点的,也会有先后顺序,所以有可能在美国生效了,但是在中国还不可访问。任何一个CDN endpoint创建以后,都会得到一个这样的地址 http://<identifier>.vo.msecnd.net, 全球范围内,不同的地方解析这个地址会得到不同的IP,在新创建的endpoint没有同步到的地方,试图访问该服务就会出现错误。
4. CDN内容在访问的时候才会建立
新创建endpoint同步到CDN节点的时候,只同步了endpoint的定义,并没有同步CDN的内容。CDN的内容只有在有客户访问的时候才会建立起来。比如我在中国访问一个CDN服务里的一个文件,DNS把我带到了香港的节点,香港的节点发现在CDN的缓存里没有我要访问的文件,它就去CDN源里获取这个文件,返回给我并缓存在香港节点的CDN缓存里。所以CDN内容在不同的节点缓存的也不一样。
5. CDN内容都有过期时间
每个CDN的内容在CDN的缓存里都有一个过期时间(Time To Live),过期时间可以通过设置CDN源的过期时间来设置。比如,如果CDN源是Cloud Service,可以通过设置HTTP返回的Cache-Control头,里面设置一个过期时间,那么CDN在过了这个时间后就会重现再从CDN源里加载一份最新的内容。如果没有设置这个时间,那么CDN会通过计算文件的最后更改时间来决定什么时候刷新。具体可以参考http://msdn.microsoft.com/en-us/library/windowsazure/gg680299.aspx和http://msdn.microsoft.com/en-us/library/windowsazure/gg680306.aspx。
6. CDN缓存的key是访问的URL
CDN缓存可以看着是一个key-value的内存,key就是访问的URL。所以如果访问jquery.js?v=4&t=3和jquery.js?t=3&v=4,虽然Cloud Service认为他们是一样的,但是CDN还是会缓存成两份,所以应该特别避免这种情况。
7. 自定义CDN域名
和Cloud Service一样,自定义CDN的域名只能通过设置DNS的CNAME来做一个别名
8. HTTPS支持
Azure CDN对HTTPS的支持还不是很理想,最主要是Azure CDN强制所有CDN服务使用同样的SSL证书文件,不支持自定义的HTTPS的证书文件,所以如果采用了HTTPS,那么就不能使用自定义的域名了。同时要注意,HTTPS只对用户访问CDN内容的时候有效,CDN在去源获取内容的时候,还是采用HTTP。
9. 删除CDN不会立刻生效
和创建CDN endpoint一样,删除endpoint也不会立刻生效,但是它的逻辑稍有不同。删除endpoint后,如果用户来访问CDN内容,CDN如果发现内容还没过期,就会把内容返回给用户;如果发现已经过期,就会去从源获取,这时候CDN发现endpoint已经删除了,即会中止该服务。所以删除CDN的生效时间和TTL相关。
10. CDN适合什么场合
除了我们常用的css,javascript,图片,静态页面之外。特别指出,CDN非常适合结合内容管理系统来实用,一般的内容管理系统的页面都是动态生产的,生产页面需要后台运算,结合Azure CDN后,通过CDN将动态生产的页面做一定时间缓存,既保证了效率,又能方便管理,发布新内容。
其他参考资料:http://blogs.msdn.com/b/windowsazure/archive/2011/03/18/best-practices-for-the-windows-azure-content-delivery-network.aspx
关键字: Azure, CDN, 内容分发网络
版权所有,转载请注明来源