2013-07-31 15 views
5

爲了最大限度地減少對我的服務器的請求數並提高加載時間,我想連接所有的JS文件,其中包括供應商js文件,如angular,jquery- ui,... 這是一個常見的做法,但我經常看到不包含其供應商的JS文件在同一個JS文件中的網站。我知道很多站點使用CDN重用其他頁面可能使用的JS文件的緩存版本。 Howewer,有時,它們是提供相同的服務器上的獨立供應商JS文件,例如在Github上:連接所有JavaScript文件(包括供應商)有什麼缺點

Github

Github上具有:包含Modernizr的,jQuery的

  • Frameworks.js
  • github -... js包含來自Github本身的JS。

是否有特殊原因要做?他們是否有任何問題可能出現,因爲你concat所有的JS文件?

回答

3

主要原因是最大限度地減少了http請求的數量。在一個更大的項目中,如果您使用的是像MV *這樣的模式,您可能需要在外部.js文件中抽象每個模塊。例如,這可能導致許多文件30-40。在這種情況下,你可能想要連接成單個文件。

在一個較小的項目中,你將有3-4個js文件,然後你可以不用連接。我使用requirejs將模塊定義爲AMD,並將每個模塊都放在外部文件中。然後我使用requirejs構建腳本來管理依賴關係和連接的部署文件。

好工具來自動完成這一過程

-1

性能方面它是不會有所作爲。如果你對所有框架都有單獨的文件感到惱火,那麼我想你可以做到這一點。否則,您只需填寫一個文件,並在稍後嘗試更新框架時可能會遇到問題。

2

取決於您的應用程序。假設,假設你有20個js文件,每個文件0.5MB。其中只有2(1MB)在第一頁上需要。您可能想要將它們分開併合並其他。在第一頁上加載其他人的延期模式。所以,當你理解所有的組合時,合併文件是很好的。作爲一般規則,如果你的文件非常少,那麼它確實沒有太大的區別。

一些的,你應該考慮結合javascript文件之前的事情,

當你把100個文件一起

。你正在減少99個請求。但你也在做以下事情:
*增加下載單個文件所花費的時間(並且可能阻止加載重要頁面)
*考慮瞭解析額外JS代碼所花費的時間從服務器拉 ,此時可能甚至不需要。javascript 引擎的速度越來越快,但它仍然是事實,JavaScript代碼的解析花費了大量的時間。

等等,總之答案是 - 「它總是一個折衷的遊戲,知道你的代碼以及幫助」 :)

http://tomdale.net/2012/01/amd-is-not-the-answer/是類似的路線一個有趣的閱讀。

相關問題