2011-12-01 58 views
4

我想知道從外部源和內部導入JavaScript文件之間,哪個解決方案最快,最適合我的網頁。每種解決方案有哪些優缺點。 例如,哪一個是最好的:從哪裏可以導入一個js文件?

< script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

< script type="text/javascript" src="../jquery.js"></script> 

(同爲json2.js)

我找不到對谷歌

感謝任何提示!

+0

CDN最大的缺點是它可能沒有'fonctions.js'。 –

+0

對不起,我的意思是jquery.js,是一個錯誤! – remyremy

+0

有趣的是,有多少答案從他們的答案中省略了地理位置(只有一個答案談論它,+1 @ eureka)。由於CDN上的數據遍佈世界各地的數據中心,因此使用CDN可以極大地減少數據傳輸的物理距離。 – Jasper

回答

4

使用CDN(內容分發網絡)的主要好處是,由於其用途廣泛,機會是你的訪問者可能已經擁有你想在他們的瀏覽器加載腳本的緩存副本。這將完全否定任何加載時間。如果他們沒有緩存副本,那麼CDN可能會以比您的服務器更快的速度將其傳遞給他們。我認爲最好在可能的情況下使用CDN。

即使考慮到這一點,CDN也不是絕對可靠的,並且您不希望您的網站100%依賴別人的服務器。我建議在本地創建一個腳本副本,並儘可能將其用作備份。 jQuery的,這是很簡單的:如果他們加載

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    if (typeof jQuery == 'undefined') { 
     document.write(unescape("%3Cscript src='/Scripts/jquery-1.7.1.min.js' type='text/javascript'%3E%3C/script%3E")); 
    } 
</script> 

其他庫可以在他們的方法進行測試有所不同,但思路是一樣的。

同樣值得注意的是,如果您是從Google的CDN加載ALWAYS,請使用完整版本號,否則腳本將不會被緩存。

也就是說,如果您的請求的URL看起來像這樣:

"http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" // highest 1.4 version (1.4.4) 
"http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" // latest version (1.7.1) 

Expires頭設置先前爲當前日期,因此緩存的效果無效。

More info on this here

+0

感謝所有這些好的答案:) – remyremy

3

最快的是definetely從自己的服務器,至少在大多數情況下(即純下載速度)。 然而,有一個更大的機會,一個訪問者在谷歌的版本的jQuery已經在自己的瀏覽器緩存使用相同的庫訪問其他網站,因此它可能讓使用谷歌API的最常見的庫更有意義,因爲如果圖書館被緩存,相比於不得不從服務器上下載,速度會更快。

而且,這些日子裏,你可以做到這一點,只要使用的第一號要求的版本:

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js 

而且automagicly獲取最新版本;)

+2

爲什麼它從你自己的服務器「絕對更快」? –

+2

如果您的服務器位於冰島並且您的用戶位於澳大利亞,那麼使用Google的CDN可能會更快,因爲他們的數據中心遍佈全球。我相信這是使用CDN的最強有力的論據。雖然如果你的服務器沒有配置正確發送過期頭並壓縮它的輸出,那麼CDN將是一個好主意(壓縮是巨大的)。 – Jasper

+0

我同意,CDN在大多數情況下都很棒,但Google的速度並不快,而且我的共享帳戶將比Google今天發送的文件更快,而且我的專用服務器將比Google更快地發送文件。即使是他們的好日子之一。至少在我住的地方,Google的服務器似乎每天都在減速,可能是很多用戶需要大量數據。這就是爲什麼我至少和我認識的大多數網站管理員一樣,從Google下載速度較慢,可能與其他地方不同,但由於緩存的好處,我們都使用Google。 – adeneo

3

如果導入從http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js的JavaScript提高數據訪問,谷歌CDN,這意味着更有效地提供內容給用戶(取決於他們的位置)。

瞭解更多關於CDN:http://developer.yahoo.com/performance/rules.html

0

如果是喜歡googlePlusOne或其他穩定的網絡服務(或外部廣告)一些已知的資源,最好是使用外部鏈接。這樣它將永遠是最新的。
如果是js庫(如jQuery或Ext),最好下載源代碼。從本地存儲庫

0

加載庫總是會更快這將表明當地始終是更好,但是......從外部來源加載庫,例如jQuery的,可以讓你的網站永遠載入最最新版本的圖書館。

+3

爲什麼它從你自己的服務器「總是更快」? –

2

使用CDN具有一定的優勢:

  • 如果用戶已經訪問使用相同的腳本從同一位置另一個網站,他們可能有它在瀏覽器緩存了。當他們不必重新下載頁面時,頁面加載速度會加快。
  • CDN提供商可能已經設置了服務器,以最大限度地提高腳本的服務效率,例如通過從服務器發送文件從物理上關閉用戶。
  • 節省帶寬。

缺點:

  • 您是依賴於服務供應商:如果他們的服務已關閉,您的網站中斷。 (如果無法加載外部腳本,可以通過提供本地文件副本來實現。)
  • 您必須信任服務提供商提供的正確文件並且沒有任何惡意。
相關問題