實際上,在大型網站上需要多少快捷?JS中的RequireJS/AMD獲得多少速度?
有沒有人對使用異步加載vs不是大型網站的速度做過任何測試?
例如,使用具有許多視圖(> 100)的Backbone,是否最好只是一個視圖對象一次加載所有視圖,然後始終可用,或者它們是否應全部異步加載如所須?
此外,移動與桌面的這些考慮是否有區別?我聽說你想限制移動請求的號碼而不是大小。
實際上,在大型網站上需要多少快捷?JS中的RequireJS/AMD獲得多少速度?
有沒有人對使用異步加載vs不是大型網站的速度做過任何測試?
例如,使用具有許多視圖(> 100)的Backbone,是否最好只是一個視圖對象一次加載所有視圖,然後始終可用,或者它們是否應全部異步加載如所須?
此外,移動與桌面的這些考慮是否有區別?我聽說你想限制移動請求的號碼而不是大小。
我不相信的require.js的意圖是加載所有腳本異步生產。在開發每個腳本的異步加載很方便,因爲您可以對項目進行更改並在沒有「編譯」步驟的情況下重新加載。但在生產你應該combining all of your source files到使用r.js optimizer一個或多個更大的模塊。如果您的大型Web應用程序可以延遲加載模塊的子集,直到稍後(例如,特定用戶操作之後),這些模塊可以單獨進行優化並在生產中異步加載。
關於加載一個較大的JS文件VS多個較小的文件,一般的速度:
「減少HTTP請求」已成爲加快前端性能一般的格言,那就是擔心,甚至在當今移動瀏覽器的世界中更具相關性(通常運行在比寬帶連接慢一個數量級的網絡上)。 [reference]
但也有其他因素,如:
最後,here's a good article by Steve Souders總結了一堆腳本加載技術。
更新:回覆CDN用法:史蒂夫Souders的使用CDN爲第三方庫(例如jQuery的)的posted a detailed analysis標識許多考慮,優點和缺點。
這個問題現在有點老了,但我想我可以加我的想法。
我完全同意rharper使用r.js來組合所有的生產代碼,但也存在分割功能的情況。
對於單頁應用程序,我認爲把所有東西放在一起很合理。對於在頁面交互中具有較大規模的更傳統的基於頁面的網站而言,這可能相當麻煩並導致爲很多用戶加載大量不必要的代碼。
的方法我都用過幾次是
這裏的優點是您可以保持最初的頁面權重下降,並且在頁面加載後加載異步腳本時,感知的性能應該更快。也就是說,以這種方式加載的所有功能都應該作爲漸進增強(即表單上的ajax)來完成,以便在加載緩慢或出錯時基本功能仍可用。
哇。這聽起來對我很有趣。您能否指出使用這種方法的項目?我想了解更多關於它的優點/缺點。 – FRD 2014-02-20 10:13:41
非常好的答案,謝謝! – 2012-07-23 15:11:49
使用RequireJS很容易創建熱重載,因爲它應該是異步加載開發中的單獨模塊 – 2015-09-03 07:32:41