2015-06-15 44 views
8

當我在本地開發時,有時(並非每次,但通常都是),成功下載了數百個JS文件(看起來像我們目前拉動1393個腳本)後,Chrome將從下載並行地將文件串行下載。Chrome切換到串行下載腳本

服務器是節點,使用express和模塊「serve-static」。我使用的是Chrome 43.0。我使用節點0.12.2。我正在使用serve-static 1.9.3。這些文件都是使用像<script src="foobar.js"></script>這樣的常規腳本標籤進行請求的。我懷疑這是一個Chrome問題,因爲服務器響應不會改變。但瀏覽器請求不會改變,只有他們的時間/順序。

任何想法?

enter image description here enter image description here

編輯:由於這看起來是一個瀏覽器的問題,我已經提交到Chromium此錯誤報告:https://code.google.com/p/chromium/issues/detail?can=2&q=serial%20script%20downloading&colspec=ID%20Pri%20M%20Week%20ReleaseBlock%20Cr%20Status%20Owner%20Summary%20OS%20Modified&id=500948&thanks=500948&ts=1434467876

+0

你會期待什麼?考慮到HTTP規範限制了同時連接的客戶端/服務器連接的數量...... –

+0

然而,您究竟如何包含這些腳本? –

+0

@ c-smile HTTP規範限制了同時連接的數量,但它們**應該**然後以組的形式下載,即6個連接關閉6個新的更多打開(或重用)例如。一個接一個是一個奇怪的問題。 – devconcept

回答

1

每個瀏覽器都有最大數量的併發請求,它將一次從任何給定主機執行,並將排隊所有其他請求。大多數瀏覽器支持每個主機名6個。在這裏查看每個瀏覽器的更多細節:http://www.browserscope.org/?category=network&v=top

1393是一個在單個頁面上下載大量腳本。您可能需要查看整個項目體系結構&文件結構以最小化這些文件以解決根目錄。

你可以考慮在單個文件或文件集中縮小/壓縮你的JavaScript文件,即使你只有幾個JavaScript文件來優化性能,也應該這樣做。

您還可以使用CDN(Content Delivery Network)託管部分或全部文件。通過跨不同主機名分發文件(即http://host1.com/file1.jshttp://host2.com/file2.js),瀏覽器可以同時從每個主機下載最大併發文件。

+0

由於腳本數量多,預計會出現樓梯效應,但在給出的屏幕截圖中,在第一個6之後,絕對不會並行加載任何腳本;所有其他的都是一次完整處理一個。 – Katana314

+0

在生產中我們連接並縮小,這是我在本地開發中遇到的一個問題 – hrdwdmrbl