2016-05-31 69 views
22

我正在開始一個新項目,我正在試着對它進行前瞻性思考。我以前使用過Browserify。對於我的新項目,我想使用Webpack,Rollup或SystemJS。 Webpack看起來是迄今爲止最成熟的,有很多很棒的功能。與HTTP/2一起使用Webpack的價值是什麼

但是我擔心Webpack會在採用HTTP/2的一兩年內無關緊要。所以我想知道,Webpack爲通過HTTP/2提供服務的網站提供什麼價值?我不是在尋找意見,而是對HTTP/2使用Webpack的好處的事實解釋。如果沒有好處,或者沒有什麼好處,那也會幫助我做出決定。

+4

我覺得只要我們以「我想要的事實」(表面上看來是關於意見的事實)來表達我們的意見請求,這有點幽默。 「offtopic」巡邏留下它。對你很好@battmanz,你狡猾的狗! –

+0

@ZephyrPellerin嘿,我得讓我的問題得到解答我可以任何方式! :) – battmanz

回答

15

TL; DR

在HTTP/1.1,你必須儘量少的要求,儘可能獲取性能;在HTTP/2中,您對每個請求的性能影響最小,但仍可能會遇到資源約束和依賴性管理,這需要捆綁工具(如webpack)。

龍版本:

的WebPack(或任何其它捆綁)在HTTP/2世界仍能提供價值,因爲在HTTP/2允許複用,異步的,從客戶端同步查詢到服務器,它並不意味着您連接的實際服務器具有無限的容量來處理它們,甚至可以允許它們。

在連接時發送的設置框架中,大多數服務器會將併發流的數量限制爲合理的值,例如100。這意味着您不能發出超過100個併發請求,如果您需要以數百個js文件爲例展示一個大型非捆綁式React應用程序。此外,在許多情況下,您在JavaScript文件之間存在傳遞依賴關係,並且如果您未捆綁所有依賴項,則需要多次請求往返,因爲瀏覽器在接收到以前的響應時纔會發現依賴關係,否定HTTP/2的好處。 (或者,服務器可能能夠自動推送依賴關係,但這會產生一整套其他問題)。

出於這些原因,是有意義的使用的WebPack打包多個同類捆,以確保您的最大併發請求保持低於服務器的限制,同時保持你的包粒度不夠充分利用高效的瀏覽器緩存。

+4

且不說的WebPack 2的AgressiveSplittingPlugin:看https://medium.com/webpack/webpack-http-2-7083ec3f3ce6#.zdo4juvgo –

+3

和用法AgressiveSplittingPlugin https://github.com/webpack/webpack/tree/主/示例/ http2侵略性分裂 –

相關問題