2010-04-30 49 views

回答

5

取決於您的服務器速度。然而,CDN可能更快,您的客戶可能已經從另一個網站緩存文件。

它會從您的站點卸載大量帶寬,但是您依賴第三方的穩定性來維護文件。 (雖然我看不出有問題,谷歌很快的任何時間)

4

但從高速緩存點優化的谷歌CDN :-)
1)
2)用戶從更優的CDN節點接收的資源

33

如果您的意思是面向互聯網網站(而不是內部網站)的核心jQuery庫,use the google CDN

的CDN具有以下優點,你會發現難分高下:

  • 更多服務器
  • 帶寬(你不支付)
  • 地理位置(低響應時間)
  • 冗餘
  • 優化的緩存設置
  • 的機會用戶具有已經緩存從那裏
  • 並行化下載文件時,用戶可以在同一時間

抓住從您的網站其他內容雖然你可以配置緩存頭就像他們這樣做,你可能無法滿足該文件更快。話雖如此,圖書館/ CDN只是難題的一部分。你有的雜項插件和代碼也應該是minified, combinedserved via gzip

+1

好點的使用可能已經緩存的文件,沒有想到那一個之前:) – 2010-04-30 16:53:36

+0

真棒答案尼克,但如果CDN服務的庫更新並突然中斷佈局或類似的情況會怎麼樣? 這不是一個安全漏洞嗎? – dzhi 2010-04-30 17:26:12

+5

@purpler - 你可以在那裏控制,例如你可以引用一個不會改變的特定版本,例如'http:// ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js'或最新的點/次版本:'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js'或最新的主要版本:'http:// ajax.googleapis.com/ajax/libs/jquery/1/jquery.js'(確保在jquery.min.js中使用生產!) – 2010-04-30 17:31:08

1

我想說Google的CDN是因爲其他人聲明的原因。

但是,如果您的目標市場距離您的服務器非常近,則最好從服務器進行服務。

舉例來說,你有一個網站forOrlandoFloridaPeopleOnly.com/。如果您的服務器託管在佛羅里達州的奧蘭多,並且Google的最接近的內容分發服務器位於佛羅里達州的邁阿密和喬治亞州的亞特蘭大(確實如此),但如果訪問者尚未擁有緩存副本,您的服務器可能會[更快]來自Google CDN的文件。

請記住,如果您確實向您的訪問者提供了靜態內容,請使用子域或其他方式嘗試並行化下載。爲了善良...不要傳輸餅乾靜態內容。

我不確定這個數據源有多可靠:Google data centers。所以不一定要依靠它。

0

值得注意的是,Visual Studio在Google CDN的Intellisense中存在問題。微軟也有一個CDN,允許Intellisense正常運行。但是,使用CDN。

3

不幸的是,最近的研究表明Google Googles CDN實際上阻礙了性能。

Google的AJAX Libraries API嘗試使用網絡效果來提高所有參與網站的性能,提供共同的共享緩存。然而最近的研究發現,很少有人使用網絡來達到臨界質量,並且實際上改善了網絡性能。目前使用網絡的開銷意味着使用Google的AJAX Libraries API實際上降低了性能。您應該在本地託管JavaScript文件。這會增加您的bandwdith消費,但會提高網頁加載速度。來自Zoompf.com表現報告的說明。

看到這裏也Should You Use JavaScript Library CDNs?

+0

我可以獲得一些關於爲什麼這是負面的反饋嗎? – Duncan 2010-10-18 15:58:22

+0

這聽起來不對。 Google的CDN服務器比您可以託管的任何東西都更快,更貼近用戶。下面是另一件事 - 瀏覽器將從* parallel *中的CDN下載jQuery到您自己的服務器上的JS中。這兩個請求將並行下載,但仍將按順序執行。所以我不知道爲什麼這會比在你自己的服務器上託管jQuery慢,或者更糟的是,將它編譯成一個巨大的JS文件。這是最壞的情況,用戶沒有任何緩存。 – ndbroadbent 2016-05-23 09:39:49

1

它還要快將它們存儲在localStorage的/網絡存儲。我創建了一個很小的圖書館這樣做,結果是很有說服力

  • 加載的jQuery從CDN:鉻268ms,火狐瀏覽器:Chrome的47ms,Firefox:在localStorage的200ms的
  • 加載的jQuery 14MS

你可以在https://github.com/webpgr/cached-webpgr.js這是微小的檢查代碼並閱讀和理解政變內的所有的這分鐘。

下面是一個完整的示例如何使用它。

完整的庫:

function _cacheScript(c,d,e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4==a.readyState&&(200==a.status?localStorage.setItem(c,JSON.stringify({content:a.responseText,version:d})):console.warn("error loading "+e))};a.open("GET",e,!0);a.send()}function _loadScript(c,d,e,a){var b=document.createElement("script");b.readyState?b.onreadystatechange=function(){if("loaded"==b.readyState||"complete"==b.readyState)b.onreadystatechange=null,_cacheScript(d,e,c),a&&a()}:b.onload=function(){_cacheScript(d,e,c);a&&a()};b.setAttribute("src",c);document.getElementsByTagName("head")[0].appendChild(b)}function _injectScript(c,d,e,a){var b=document.createElement("script");b.type="text/javascript";c=JSON.parse(c);var f=document.createTextNode(c.content);b.appendChild(f);document.getElementsByTagName("head")[0].appendChild(b);c.version!=e&&localStorage.removeItem(d);a&&a()}function requireScript(c,d,e,a){var b=localStorage.getItem(c);null==b?_loadScript(e,c,d,a):_injectScript(b,c,d,a)}; 

調用庫

requireScript('jquery', '1.11.2', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function(){ 
    requireScript('examplejs', '0.0.3', 'example.js'); 
}); 
+0

我不知道你爲什麼要這樣做,這沒有多大意義。從CDN加載腳本意味着它被瀏覽器自動緩存,所以你只是用本地存儲做同樣的事情。爲什麼不使用瀏覽器緩存,這已經是即時的? – ndbroadbent 2016-05-23 10:43:01

+1

https://addyosmani.com/basket.js/上的「爲什麼localstorage」是一個有趣的閱讀。我想這可能是有道理的,因爲你可以跳過來自服務器的「304未修改」響應。 – ndbroadbent 2016-05-23 10:46:36

+0

我明白這個迴應有加載時間來支持這個說法,我想看看是否有人有反對說服的數字。如何反駁這些數字表示真正的相關性?爲什麼這些數字不相關或獨立於我們正在辯論的相應速度? – mrmaclean89 2018-01-03 21:25:54

相關問題