我知道,對不同腳本執行很多請求會影響性能,即我的腳本需要30個依賴關係,因此require.js會爲此請求31個請求。我可以使用require optimizer並下載一攬子腳本。Require.js和SPDY
如果我使用SPDY並仍然使這些31請求能夠複用請求幫助我,並且不會使性能差異明顯?
謝謝
我知道,對不同腳本執行很多請求會影響性能,即我的腳本需要30個依賴關係,因此require.js會爲此請求31個請求。我可以使用require optimizer並下載一攬子腳本。Require.js和SPDY
如果我使用SPDY並仍然使這些31請求能夠複用請求幫助我,並且不會使性能差異明顯?
謝謝
當您使用SPDY,復請求可能會提高你的表現能力。
原因是,對於普通的HTTP,瀏覽器通常只能同時發出6個請求(假設你的所有30個腳本將從同一個域下載)。 然後,瀏覽器必須等待至少一次網絡往返才能執行第7次請求。 根據您的客戶在服務器上的位置,網絡往返時間可以在50ms到500ms範圍內,有時甚至更長。
有了SPDY,所有30個請求都可以一次完成,這要歸功於多路複用。
此外,實現SPDY Push的SPDY服務器可能會將30個輔助資源連同對主資源(通常是HTML頁面)的初始請求一起推送到客戶端。
Jetty實現了SPDY Push,您可以觀看this demo以查看SPDY Push在請求與主要資源關聯的20多個輔助資源時所做的差異。
所以基本上,如果我使用SPDY,可以發出31個請求來獲取所有js文件。 –
你能舉個例子嗎?我在這裏設置了一個SPDY Nginx文件服務器,但發現它仍然很慢。我猜測,由於RequireJS需要逐一請求文件,因此它可能與正常的HTML頁面不同,Chrome將所有請求合併爲一個。那可能嗎? – jiyinyiyong
瀏覽器解析一個包含30個圖像的HTML頁面時,不需要在找到第一個圖像時停止解析。圖像請求之間的延遲是由於解析,而不是網絡。同樣,RequireJS可以並行請求* .js文件,而不必等待每個文件都被下載。這些都是SPDY有助於多路複用的情況,特別是如果圖像數量很大(比如超過10個)。我使用Jetty(我是其開發人員之一),對Nginx無能爲力。 – sbordet
那麼你最後呢? – jiyinyiyong
不,這只是一個理論上的問題,因爲我不想做多個請求來獲取資產,直到瀏覽器的主要部分支持SPDY功能 –
我今天嘗試過。當計數大於100時,看起來SPDY中的文件略快於HTTP中的文件。對於20個文件,SPDY看起來較慢。我在這裏(但用中文)記下了一些筆記,也許其中一些是有幫助的。 http://blog.segmentfault.com/jiyinyiyong/1190000000471129 – jiyinyiyong