[英]Including local vs. remote javascript libraries
如果您的應用程序在 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 的縮小版本。
這種方法獲得的好處來自於緩存:
您不希望潛在用戶對您網站的第一次訪問緩慢而令人失望。 如果您的第一次訪問者訪問了我的網站,該網站使用此 URL 進行 jQuery,她的瀏覽器可能已經緩存了它,因此不需要加載它。
使用不可變的版本化資源(jquery/1.8.0 而不是 jquery/current 之類的東西)既可以幫助開發人員不必跟蹤其生產代碼中的重大更改,又可以確保可以緩存這些資源。
如果必須下載資源並且 URL 托管在 CDN 上,您可能會獲得較低的延遲,因為資源可能會從更靠近用戶網絡的服務器加載。 示例中的 URL 托管在作為 CDN 的 Google Hosted Libraries 上。 有關詳細信息,請參閱https://developers.google.com/speed/libraries/devguide 。
在此類討論中經常看到的另一個論點是,當必須下載資源時,如果資源不在您自己的服務器上以及您的頁面包含的 10 個以上資源,您將能夠獲得更好的客戶端資源加載並行性,因為瀏覽器限制他們自己加載來自同一服務器的少量資源(在現代瀏覽器中大約為 6 個)。
如果您的 Internet 范圍的 Web 應用程序是安全關鍵的,您必須盡可能多地控制它,以便安全地管理(靜態不可變或幾乎不可變的資源相對容易安全地管理)。
如果我的銀行通過 HTTPS 運行的電子銀行應用程序依賴於谷歌的 HTTP 服務器來提供服務,它既會授予谷歌對其電子銀行應用程序客戶端部分的權限,也會消除 HTTPS 連接的幾乎所有好處它的服務器。 流氓客戶端腳本幾乎不能做的事情......
如果您的應用程序是在本地訪問的,您可能應該將它包括在您的應用程序中,以提高性能(在延遲和帶寬方面訪問您的服務器應該比訪問某些遠程服務器更快)和可靠性原因(您不依賴在外部互聯網連接和正在啟動和運行的遠程服務器上)。
這取決於開發人員是否對您“熱鏈接”到 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 URL 是 CDN URL(我可能是錯的)。 使用適當的 CDN 或外部鏈接來引用 JS 庫當然是一種常見的做法,您可以在 JQuery 頁面上看到這樣的示例,但這通常是作為頁面性能增強的一部分完成的。 CDN 針對用戶的地理位置進行了優化,因此可以更快地提供對 CDN(相對於主服務器)上任何內容的引用。 它具有用戶體驗優勢。 如果頁面加載時間對您的用戶群很重要,這將很有用。
另一種也是最安全的方法是在您自己的源代碼管理中保留一份 JS 庫的副本,並使用您自己的基礎設施引用它。 它與您同在,它是一個固定版本,如果發生某些變化(例如重組、站點關閉等),您也不會感到意外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.