2012-12-02 25 views
5

我使用jsSHA 1.3.1我downloaded here和在我的本地學習項目中使用。它給出了一個稍微不同的結果比我參照遠程如下副本:包括本地與遠程JavaScript庫

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script> 

遠程複製很適合我,現在,多虧了@Andreas here這個優秀的答案。

但它給我留下了一個新的問題:什麼是對包括一份對涉及到遠程JS庫的原理是什麼?這是否像'vendoring'庫,隔離我的應用程序從代碼中的後續更改?

+0

下載鏈接的最後更新4個月前,而資源已經有很多活動在一段時間內 http://stackoverflow.com/questions/5502540/should-github-be-used-as -a-cdn-for-javascript-libraries – dm03514

+0

如果你要熱連接GitHub,你應該首先嚐試gh-pages分支中的文件,它們很可能是最新的穩定版本。在這種情況下,它是http://caligatio.github.com/jsSHA/sha.js – livibetter

+0

提到你以前的問題中的問題,使問題有點不太清楚。也許你可以編輯它以使*新*問題更突出一點? (並不是說你不應該鏈接到舊的問題,但也許你可以先提出新的問題,然後給任何感興趣的人提供一個老問題的鏈接。)乾杯!我喜歡這個問題,並且很樂意投票給它,但它需要一點OP注意:-) –

回答

8

如果您的應用程序可以在WWW上,你可以考慮使用一個衆所周知的外部URL。


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

下面這個例子獲取的jQuery 1.8.0,從谷歌的服務器縮小的版本。


  • 通過這種方法獲得的好處來自緩存:

    • 你不想在第一次訪問一個潛在的用戶對你的網站將是緩慢而令人失望。如果您的首次訪問者訪問過我的網站,該網站使用jQuery的這個URL,她的瀏覽器可能會緩存它,所以它不需要加載它。

    • 使用不可變版本資源(jQuery/1.8.0而不是像jquery/current之類的東西)都可以幫助開發人員不必跟蹤其生產代碼中的重大更改並確保可以緩存這些資源。

    • 如果必須下載資源並將URL託管在CDN上,您可能會獲得更低的延遲,因爲資源可能會從靠近用戶網絡的服務器加載。該示例中的URL位於CDN的Google託管庫上。有關更多信息,請參閱https://developers.google.com/speed/libraries/devguide

  • 經常看到這樣的討論另一種說法是,當資源已被下載,你將能得到更好的客戶端資源加載並行如果資源沒有自己的服務器上加上10您的頁面中包含更多資源,因爲瀏覽器會限制自己從同一臺服務器加載少量資源(現代瀏覽器中的6個左右)。

  • 如果您的互聯網範圍內的Web應用程序安全關鍵,你必須保持儘可能多的它的控制,你可以安全地管理(和靜態不變的或幾乎不變的資源都比較容易能夠安全地管理)。

    • 如果它運行在HTTPS我的銀行的電子銀行應用程序都依賴於谷歌的HTTP服務器的服務,它都希望能在其電子銀行應用程序的客戶端部分給予谷歌的權威和消除幾乎所有HTTPS連接到其服務器的好處。很少有事情,惡意的客戶端腳本不能做......

  • 如果您的應用程序在本地訪問,你應該包括在您的應用程序針對性能(訪問您的服務器應該是在延遲和帶寬方面都比訪問某個遠程服務器更快)以及可靠性原因(您不依賴於外部Internet連接以及遠程服務器啓動和運行)。
3

它歸結爲開發商是否是很樂意與你「盜鏈」的JS庫。

關於您所張貼的具體網址,

https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js 

我會警惕引用該的。它是源代碼的主分支,它們可能隨時包含重大更改。他們甚至可以決定移動和調整他們的代碼庫,在這種情況下,你的應用將打破如上的URL將導致404

更好的解決方案確實是引用該庫的特定版本。這可以確保您的應用程序的行爲,並且將繼續按照jsSHA庫的預期和已知方式行事。

有幾種方法可以做到這一點。您可以參考一個固定的URL明確指定一個版本

http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js 

由於其標籤(3.0.2),你是一個比較安全的,但你仍然引用源的控制。如果存在的話,這應該通過CDN完成。我不相信googlecode.com網址是CDN網址(我可能是錯的)。當然,通常使用適當的CDN或外部鏈接來引用JS庫,並且您可以看到一個example of this on the JQuery page,但這通常是頁面性能增強的一部分。 CDN針對用戶的地理位置進行了優化,因此對CDN上的任何內容(而不是主服務器)的引用將得到更快的處理。它具有用戶體驗優勢。如果頁面加載時間對您的用戶羣很重要,那麼這很有用。

的替代,以及最安全的方法,是保持JS庫的副本在你自己的源控制和使用自己的基礎架構中引用它。它與你同在,它是一個固定版本,如果改變了某些東西,比如重組,站點停止等,就不會有什麼意外。