一、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%以上比較理想。