幫助中心
這里有最新的使用文檔和教程
CDN在啟著兩個特點: 一是分步式的節點,起到負載均衡、協調跨運營商跨地域訪問的作用;二是節點上的緩存,這無疑可以減少源服務器的負載,節省帶寬。
正是由于CDN如上兩個特點,也給網站的管理人員帶來了不少麻煩:
1. 靜態文件版本管理
CDN的緩存是用戶一般不可控的,且靜態資源(如:js、css、圖片等)的緩存時間非常長,雖然CDN提供商一般都會提供刷新緩存的方法,這種方法在少量更新時可以接受,但如果更新文件過多(如一次升級),則會非常麻煩。可以使用“ 靜態資源(JS、CSS、圖片)版本控制”說的,對靜態資源進行管理,這樣每次升級時即省事又省心。
2. 啟用HTTP壓縮
HTTP壓縮是網頁優化幾大方法中見效最大的一個,啟用CDN后,HTTP壓縮的配置會比較麻煩。在做完成通常的啟用壓縮方法后,還要 啟用壓縮對HTTP1.0、代理的支持,在IIS下配置如下:
cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForHttp10 false
cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForProxies false
做完上述配置后,通知CDN提供商,開通HTTP壓縮功能即可。
而我用的網宿CDN還有其特殊要求,他要求 在響應里增加一個HTTP Header: Vary: Accept-Encoding 。只有有這個頭部的文件,才會接受壓縮。這個Header可以簡單地在IIS的站點屬性里添加。
3. 獲取客戶端真實IP
由于訪客不是直接訪問源服務器,跟源服務打交道的都是CDN的節點機器,所以在源服務器抓取到的IP都是節點IP。這對按ip來統計的瀏覽量、網站統計等模塊的影響會比較大。一般來說,CDN節點會以某種方式將源客戶端的IP傳遞給源服務器,就拿我用的網宿CDN來說,它是將源IP添加到了一個叫“Cdn-Src-Ip”的Http Header里,以C#語言為例,獲得客戶端真實IP的方式如下:
// 網宿的cdn是
String srcIp = Request.Headers["Cdn-Src-Ip"];
if(srcIp == null) {
srcIp = Request.UserHostAddress;
}
//藍汛的是
HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"];
以上內容,根據不同的CDN提供商可能會有所不同,操作前最好咨詢自己的CDN提供商