1. 程式人生 > >瀏覽器請求與域名的關系

瀏覽器請求與域名的關系

沒有 tro 常見 服務器 衍生 過多 引入 信息 鏈接

在最近的面試中被問到了這樣一個問題:

百度搜索的圖片資源來自跟百度不同的域名 imgstat.baidu.com, 原因是什麽,這樣做有什麽好處。

平時這方面不太註意,一時半會答不上來,回來之後照著這個問題在網上學習了一下, 好處有以下:

1. 不必每次請求都攜帶cookie 信息 -- cookie free。

說明: 按照傳統的方式,假設網站的 cookie 信息有 1kb, 如果網站上有150個資源的時候,則請求的過程中需要攜帶 1kb * 150 = 150kb 的數據。多多少少會對速度造成影響。而且這個信息在請求js/css/img/flash 這些靜態資源上,幾乎是沒有必要的。解決方案是啟用和主站不同的域名來放置靜態資源。

2. 多個域名可以加大並發數 ( 因為瀏覽器對一個同一個域名的請求並發數量是有限制的 )

比如,某個瀏覽器對一個域名的並發數是6, 如果我們設置n個服務器域名,那麽並發數可以達到 6n,但是n 也不宜過多。

說明:

將css放置在頁面最上方應該是很自然的習慣,但第一個css內引入的圖片下載是有可能堵塞後續的其他js的下載的。而在目前普遍過百的整頁請求數的前提下,瀏覽器提供的僅僅數個並發,對於進行了良好優化甚至是前面有CDN的系統而言,是極大的性能瓶頸。 這也就衍生了domain hash技術來使用多個域名加大並發量(因為瀏覽器是基於domain的並發控制,而不是page),不過過多的散布會導致DNS解析上付出額外的代價,所以一般也是控制在2-4之間。 這裏常見的一個性能小坑是沒有機制去確保URL的哈希一致性(即同一個靜態資源應該被哈希到同一個域名下),而導致資源被多次下載。

答案內容來自知乎:

作者:黃良懿

鏈接:https://www.zhihu.com/question/20474326/answer/15696641

瀏覽器請求與域名的關系