一、CDN服务商
1. 蓝汛,网宿,帝联,快网,世纪互联,CDN联盟
2. 蓝讯的CDN带宽数和节点数最大,接下来是网宿,帝联,快钱。帝联是网宿分出来的,快钱的早期CDN人员也同网宿有关。世纪互联2008开始介入CDN市场。这家的共同点就是都是全国性的大IDC转而增加CDN业务,CDN联盟的势头也不小,应该也会陆续部署一些固定节点。电信和网通也有开始做CDN,但是受体制的制约,一个地方性的电信网通公司,要想全国布点是很麻烦的。
二、选择CDN服务商的条件
1. 如果你的客户群只集中于本地小范围内,那么CDN对你来说可能并无太大用处。
2. 首先第一点当然是选择正规的,第二要选择适合的,比如你做国外的,要选择CDN节点在国外有优势的。国内的当然是选择本土的CDN服务。第三看节点,不是说CDN节点越多越好,看你的需求,根据市场分布选择。当然那种全国都有的更好。
3. 可靠性、稳定性、响应时间、命中率、覆盖面、跨网访问、可控制性、DNS解析的稳定性。最近看视频发现DNS解析经常出问题,影响用户体验。
三、CDN服务使用成本
1. 计费方式,按照流量、带宽、第三峰值,3种方式计费,一般按照流量计费,即每G多少钱。
2. 自建CDN,初期成本低,方便控制。但是随着规模扩大,成本将升高,维护困难。
3. 一般能减少对主服务器50%--70%的访问量。
4. 80%的用户一般访问的是20%的资源,作为CDN可行性的基本的理论支持。
四、CDN基本实现方式。
1. 内存缓存。
2. 反向代理,实现软件Squid、Nginx、apache等,Squid和Nginx有windows版本实现。
3. 主要实现静态内容缓存、有的服务商也支持动态内容缓存。
五、CDN存在的问题和解决方式
1. CDN缓存,生成缓存以后,如果文件有更新,清除CDN缓存比较困难,导致用户长时间不能访问到最新文件,如果是Js或者CSS有更新,将导致页面凌乱和JS执行错误。
解决方法:a.可以用CDN厂商提供的API接口,去清除缓存,但是一般有时间段内的调用次数限制。还可以设计一个钩子,去清除缓存。b.设置js文件带版本号,如 http://test.com/js/test.js?123456,这种方式部分缓存会不认“?”后面的参数变化,导致请求得来的文件还是久版本的。或者http://test.com/js/test123456.js,这样强制更新文件名,就是每次更新js等文件修改文件名。c.http://test.com/CSS/common.css?time=123456.css,如此构造,也是一种奇迹的解决方式,后面的time=123456.css可以随便怎么修改。d.css、js文件的地址后面加上如 ?v=123 的版本号, 每次发布都自动增1。
总结:以上是网上搜索出来的解决静态文件更新后,CDN缓存的问题的解决方案,最简单的就是在文件后面增加,参数,更加参数的不同,进行控制CDN缓存,这种方式注意一些较2的CDN服务商不支持参数的形式。钩子程序不可靠,CDN静态文件分散在各处,钩子触发有局限。提供的API是比较可靠的,但是实现稍稍复杂,而且可能存在于,更新期间的,自己的静态文件已经更新,但是API执行还未来得急,清除所有缓存,导致部分错误的风险,而且提供的API一般执行次数有控制,比如更新的文件很多,API执行到一半文件更新请求的时候,执行次数到达上限,不能继续通过API清除缓存。
2. 缓存命中率过低,可能导致CDN效果不明显,一般能达到90+%的效果,能到达95%以上比较理想。