2010-06-21 60 views
6

有什麼更好的。在性能方面什麼更好?

你有說20個JavaScript文件。 10在所有頁面之間共享。所以他們會在主頁面。現在這些其他10呢?假設一頁使用4/10,另一個使用4/10,另一頁使用2/10。

它會 a)更好地將它們全部合併成一個文件(當然是動態的),這樣只會產生一個http請求。

B)有10個組合在母版頁,那麼所有其他網頁的會出現合併。

所以在我的一些網頁我會在看4或5的Java腳本請求

  1. 一個從主
  2. 一個從谷歌CDN
  3. 一個jQuery的從谷歌CDN
  4. jQuery UI的
  5. 一個用於jQuery驗證來自MS CDN
  6. 一個用於該頁面的任何內容。

我的大部分腳本已經使用jquery live,因爲我使用jquery ajax選項卡,並且必須同時爲每個選項卡加載所有腳本。

如果不是每次你去到另一個標籤頁,它都會下載一組新的javascript,因此它會開始執行綁定事件,例如點擊X時間,其中X是用戶加載同一標籤頁的次數。

+0

保持你的js文件比較小,不要把很多東西合併成一個大文件!使用服務器端語言根據當前頁面切換它們!儘量減少所有的js文件! – 2010-06-21 23:41:59

+0

可能應該修改標題來說HTTP請求或Javascript性能,因爲這不是特別關於JavaScript或jQuery。 – Jordan 2010-06-22 02:17:21

回答

1

根據您使用的語言/服務器的不同,有很多工具可以將頁面上所需的JavaScript文件動態組合爲僅針對該頁面的單個請求。根據您對Microsoft CDN的參考,這聽起來像您正在使用ASP.NET。 Here's a combiner that might work for you,它會將您本地JS文件的請求合併爲一個請求。如果是我,我會做什麼是負載:

  1. JQuery的& JQuery用戶界面從谷歌
  2. JQuery驗證從MS CDN
  3. 您當地的JS文件合併(使用工具如上述)爲一個下載。

這樣你可以得到3個並行下載。

+0

好吧,我使用了一種叫做http合成器的東西,但是我的列表只有很少的請求,我可以把它歸結爲(很少)。我可以將2-3(所有的CDN)結合起來,但是我認爲我會失去潛在的緩存版本,所以我就離開了它。 – chobo2 2010-06-21 23:22:45

+0

請記住來自不同域的請求相互平行。因此,Google/MS /本地站點請求也將同時運行。另外,一旦您爲特定用戶下載了一次JQuery/JQuery UI/JQuery驗證,他們很可能會在緩存中擁有該驗證。因此,關鍵是儘可能少地將您的本地資源請求減少到一個請求。 – Keltex 2010-06-21 23:24:02

+0

我會看看不知道它與我使用的http://code.msdn.microsoft.com/HttpCombiner不同。現在對於一個(谷歌的東西)你梳理他們或只是使用鏈接?是的,我知道不同的域名運行並行,這就是爲什麼我試圖找到第三個網站的jQuery U.我這樣,我會讓那些3在同一時間。 – chobo2 2010-06-22 00:21:45

0

取決於非共享文件的大小。如果它們不是太大,就把它們組合起來。請求通常需要比轉移更長的時間。當然,如果你真的關心很多,你應該做你自己的基準。

但是,如果有疑問,結合。

編輯:我剛剛讀你的問題。對於緩存主組合版本,選項B更好。

+0

有多大? – chobo2 2010-06-21 23:25:38

+0

我的經驗法則是每個文件大約75kb。更重要的是,最好將至少2個文件分割爲並行HTTP下載。 – Jordan 2010-06-22 01:53:12

相關問題