[英]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.