網頁效率之DNS尋找和並行下載

來源:互聯網
上載者:User

雅虎的YSlow外掛程式的規則之一:Rule 9 – Reduce DNS Lookups提到:

Reducing the number of unique hostnames has the potential to reduce the amount of parallel downloading that takes place in the page. Avoiding DNS lookups cuts response times, but reducing parallel downloads may increase response times. My guideline is to split these components across at least two but no more than four hostnames. This results in a good compromise between reducing DNS lookups and allowing a high degree of parallel downloads.

說說自己的理解:

首先,一個頁面所需要訪問的網域名稱數量為n,那麼就需要n次DNS尋找,而DNS尋找通常是blocking call,就是說在得到結果之後才能繼續,所以越多的DNS尋找,反應速度就越慢;

其次,並行下載(parallel downloading)由兩個因素決定:到伺服器的串連數量,以及每個串連內部的流水線請求數量。

一個頁面裡到伺服器的串連數量由兩個因素決定:

頁面所需訪問的網域名稱數量,和
瀏覽器所允許的最多串連數
後者在Mozilla/Firefox中還由瀏覽器所允許最多串連數(network.http.max-connections,預設為24),和每個伺服器所允許的最大串連數(network.http.max-connections-per-server,預設為8)決定。如果max-connection-per-server是m,那麼一個需要訪問n個不同網域名稱的主機的頁面,最多可以有n*m個串連 - 前提是n*m小於max-connections的值;

每個串連內部的流水線請求(pipelined requests)的數量也是瀏覽器的參數(Firefox上由network.http.pipelining來設定,預設為4),前提是伺服器支援persistent connection(比如在Apache設定KeepAlive為On)。之前的例子就不需要那麼多的串連了(對伺服器和瀏覽器來說,一個串連裡多個流水線請求能夠比多個並行串連更好些),假設pipelining的值為p,那麼就可以只使用n*m/p個串連了。(BTW,對Firefox做最佳化的一些外掛程式其實就是對上面的幾個設定做調整)

所以減少頁面內不同hostname的數量不一定會減少並行下載的數量,也要看所需要的請求(css, javascript, 圖片等)的數量,因此YSlow的解釋說是potentially。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.