推送式与拉取式CDN服务的优劣问题
因为以前也做过一些站,所以用过国内外的一些cdn加速服务。我发现这些服务无非分为两种
- 以Amazon的CloudFront为代表,内容发布者主动将需要发布的资源推送到CDN发布服务器上,然后由CDN服务商分发到其各节点。国内的提供商有UpYun。
- 以CloudFlare为代表,与前者不同,内容不需要主动发布,而是在浏览器向CDN请求资源时,CDN服务才主动向后端的资源服务器抓取资源。国内的提供商有WebLuker。
这两种服务,一种推送,一种拉取。后者除了在DNS设置上稍显麻烦外,其它方便性均超过前者,特别是因为内容源在自己的服务器上,可以灵活的设置url,比如动态合并js之类的功能,都可以实现了。
而前者除了多一个存储备份的功能外,内容的组织形式较为死板,必须按照静态目录的方式组织,不适合较为灵活的开发。似乎后者才是大势所趋。
以上是我的看法,不知道各位有没有研究过这两者的优劣,我想后者一直存在一定有它的原因的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我上个月正好跟又拍云、中国擦车网、快网谈过CDN合作,8年前也用过CDN,来解答一下吧。
我想首先明白CDN的原理和需要解决的问题就可以很容易取舍了。
CDN无非就是解决静态文件就近访问,达到加速的目的,并且都是反向代理,唯一的区别的就是两者的源不一样。CDN的难点其实不在技术而是在网络和点的分布,还有对ip分布的判断上面。
拉取式,相对简单,但灵活性很大,因为源是由自己控制的,而且还可以配合header头的信息对不同的静态文件进行相应的控制,这个只要跟CDN合作商谈好就行,国内是可以这样的。缺点就是跟推送式的优点。
推送式,灵活性就没有那么大了,源是需要通过一定的方式推送到CDN指定的位置,而且需要配合代码更新和业务需求进行及时的推送,推送式会有一点的延时,主要看CDN商的实现方式和推送API的效率,有些CDN商的推送上去之后还会将数据分发到他们自己不同的服务器存储多份,更有恶心的CDN商,分发是通过计划任务每隔多久进行一次分发,那么延时性就更大。再加上如果一旦内部出现问题排查时间会比较久。但推送式的优点是可以减少源站的网络带宽流量,对于访问量大和延时性不高的业务有非常好的作用,并且多地备份也起到安全性的作用。
取舍就跟你的具体业务有关系了。
另外有提到amazon亚马逊的CDN,就是一个很明显的推送式,一方面是方便他自己的结构,这种方式对于亚马逊也可以很方便和简单的流程控制,另一方面也可以减少流量费用,所以他只采用了这一种方式。
我要提醒一点的是,有缓存就需要有更新,CDN的缓存更新是基本都要涉及的问题,像亚马逊就不支持带参数的方式更新,因为他认为 http://1.t.com/1.jpg和 http://1.t.com/1.jpg?version=2 是同一个url不管?后面的内容,所以你的缓存更新就要想办法啰。
推送式的CDN排查问题的话比抓取式的要困难点
网页的话,其实用代理模式就可以了。大文件还是建议你做CDN的预推,这样的话 源压力就非常的小了。不过又些CDN是需要会源的 例如:网宿 CC。