包括本地和远程JavaScript库

dan*_*anh 5 javascript sha

我正在使用我在这里下载的 jsSHA 1.3.1,并在我的localhost上用于学习项目.它的结果与我通过引用遥控器获得的副本略有不同,如下所示:

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script>
Run Code Online (Sandbox Code Playgroud)

由于@Andreas 在这里的出色答案,远程拷贝对我来说效果很好.

但它给我留下了一个新问题:包含副本与引用远程js库的理由是什么?它是否像'销售'库一样,使我的应用程序与代码中的后续更改隔离开来?

Mil*_*dis 9

如果您的应用程序在WWW上可用,则应考虑使用众所周知的外部URL.


<script type="text/javascript"
   src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"
</script> 
Run Code Online (Sandbox Code Playgroud)

以下示例从google的服务器获取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个).

  • 如果您的互联网范围的Web应用程序对安全性至关重要,您必须尽可能多地控制它,因为您可以安全地管理(并且静态不可变或几乎不可变的资源相对容易安全管理).

    • 如果我的银行通过HTTPS运行的电子银行应用程序依赖谷歌的HTTP服务器进行服务,那么它将授予谷歌对其电子银行应用程序的客户端部分的权限,并且几乎消除了HTTPS连接的所有好处.它的服务器.流氓客户端脚本无法做到的事情很少......

  • 如果您的应用程序在本地访问,你应该包括在你的两个性能的应用程序(访问您的服务器应该比无论是在延迟方面和带宽方面访问一些远程服务器更快)和可靠性的原因(你不依赖在外部Internet连接和远程服务器上运行).