利用多個域名來儲存網站資源
阿新 • • 發佈:2018-12-15
1. CDN快取更方便
CDN:是構建在網路之上的內容釋出網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容釋出、排程等功能模組,是使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。CDN的關鍵技術主要是內容儲存和分佈技術。簡單來說,CDN主要用來使使用者就近獲取資源。
2. 突破瀏覽器併發限制
同一時間針對同一域名下的請求有一定數量限制,超過限制數目的請求會被阻塞。大多數瀏覽器的併發數量都控制在6以內。有些資源的請求時間很長,因而會阻塞其他資源的請求。因此,對於一些靜態資源,如果放到不同的域名下面就能實現與其他資源的併發請求。
因而後來衍生了domain dash來加大併發數,但是過多的域名會使DNS解析負擔加重
對於圖片資源的載入,利用css sprites技術,結合background的定位在同一張圖片中載入多個圖片,這也是減少併發數量的一種常用方法。
3. 節約cookie頻寬
使用者的每次訪問,都會帶上自己的cookie ,挺大的。假如twitter 的圖片放在主站域名下,那麼使用者每次訪問圖片時,request header 裡就會帶有自己的cookie ,header 裡的cookie 還不能壓縮,而圖片是不需要知道使用者的cookie 的,所以這部分頻寬就白白浪費了。
寫主站程式時,set-cookie 也不要set 到圖片的域名上。
4. 節約主域名的連線數,優化頁面響應速度
因為老的瀏覽器(IE6是典型),針對同一個域名只允許同時保持兩個HTTP連線。將圖片等資源請求分配到其他域名上,避免了大圖片之類的並不一定重要的內容阻塞住主域名上其他後續資源的連線(比如ajax請求)。
5. 防止不必要的安全問題
對於UGC的內容和主站隔離,防止不必要的安全問題( 上傳js竊取主站cookie之類的) 。正是這個原因要求使用者內容的域名必須不是自己主站的子域名,而是一個完全獨立的第三方域名。