在本地托管 jQuery 的好处与陷阱

IT技术 javascript jquery jquery-ui cdn
2021-01-23 05:57:06

我们目前正在从谷歌 CDN 中提取 jQuery 和 jQueryUI(和 jQueryUI CSS)库。我喜欢这个,因为我可以调用google.load("jquery", "1");
并且将使用最新的 jQuery 1.xx。

现在我为了安全起见要在本地拉库。

我很高兴将它们拉到本地,但我想知道还有哪些其他好处和需要注意的陷阱?

6个回答

我总是使用 Google 的 CDN(内容交付网络)。但以防万一它离线:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>

如有必要,获取 Google CDN 的 jQuery 并回退到本地

编辑:如果您不需要支持 IE6 并且您的站点有部分 https 使用,您也可以删除 http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
我一定在这里遗漏了一些东西......这种方法是不是假设加载了 CDN 的 jQuery 将在下一行 ( !window.jQuery...)被解释之前加载和被解释?<script>标签是异步处理的,对吗?
2021-03-16 05:57:06
2021-04-01 05:57:06
<script>标签是同步处理的!在第二行 jQuery 必须已经加载,但以防万一我们注入一些 JS 以在本地加载它。document.write如果 jQuery 已经存在则永远不会执行。
2021-04-08 05:57:06
XVIDEOS 现在使用此解决方案 :P
2021-04-11 05:57:06

将它们放在 CDN 上的主要好处是,这些文件可以与从您自己的网站下载的文件并行下载。这减少了每个页面的延迟。因此,另一方面是在本地托管会增加延迟的陷阱主要原因是浏览器可以同时连接到同一个网络域的连接数量受到限制。在 IE6 中,这被默认为 2 个到同一个域的并发连接 -在 IE 的所有打开的窗口之间共享!!在 IE8+ 中它有所改进,默认为 6,与 FF/Chrome 一致,但是,如果您有很多图像并且不使用精灵,您将遇到严重的延迟。

使用 CDN,我总是明确设置库版本,而不是获取最新版本这降低了新版本破坏代码的风险。jQuery 不太可能,但可能。

使用 CDN 的另一个主要好处是减少您网站上的流量如果您按 GB 付费,或者您使用的是资源有限的虚拟服务器,您可能会发现当您将某些内容转移到公共 CDN 时,整体站点性能会提高,托管成本会降低。

确保您还阅读了@Xaver 对此问题的其他答案。这是一个很好的技巧

-revaxarts我看不到这样的答案,既不是当前的也不是删除的。什么是“非常好的技巧”?
2021-04-04 05:57:06
明确设置库版本的另一个好处是谷歌给它更长的缓存时间,例如指定 1.9.1 将提供比仅请求 1.9 更长的缓存寿命(因为新的 jQuery 1.9 版本可能会发布,但 1.9.1 将始终是相同)。
2021-04-06 05:57:06

其他人已经涵盖了这些好处。陷阱:

  • 如果您只包含来自您自己的服务器的内容,则该服务器需要运行——而不是被防火墙等阻止——以使您的站点正常工作。从第三方拉取脚本,现在需要运行和解锁两台服务器才能使您的站点正常工作。

  • <script>从中提取的任何站点都可以完全控制用户在您站点上的体验。如果谷歌感觉邪恶,他们可以在他们的 jQuery 副本中放一些东西来记录你的按键,从你所在的页面窃取个人信息以绑定到他们的网络跟踪数据库,让你发布“我爱谷歌!” 对每个表单的评论,等等。

Google 可能实际上不会这样做,但这是一个您无法控制的因素,当然还有其他脚本托​​管服务需要担心的问题。之前曾发生过统计脚本被恶意软件加载程序破坏的事件。

在包含来自第三方的任何脚本之前(即使是在您网站的一个页面上),您必须 100% 地信任它们具有在该主机名上可见的所有用户可访问功能(包括面向 Web 的管理功能)。

谷歌不会那样做……我喜欢谷歌……他们会吗?:-p
2021-03-25 05:57:06
优点:从未想过远程 CDN 脚本如何被黑客入侵,然后被拉到我的网站上。对于 jQuery、jQueryUI、Boostrap 等主要库来说可能并不常见,但正如前面提到的,较小的、支持较少的库可能成为受害者,特别是如果它们没有保持最新。好点+1
2021-03-30 05:57:06
2021-04-02 05:57:06
关于安全问题的要点。
2021-04-06 05:57:06

谷歌 CDN:

  • 缓存,有利于性能,更多用户可能已经拥有它,并且并行下载
  • 如果有的话,heaver forbid CDN 会关闭。你完蛋了。
  • 如果新版本破坏了您现有的插件或站点,您可能会太晚知道它

本地:

  • 无需联网即可开发
  • 除了缩小之外,仍然可以通过 gzipping 获得一些性能优势
if a new version breaks your existing plugins or site, you'll know about it possibly too late 您可以在 CDN 链接中指定版本,以避免这种情况。
2021-03-17 05:57:06
然而,你从谷歌的 CDN 加载的 jquery 被缩小了。使用 cdn 的另一个好处是它使您的目录结构更清晰:)
2021-03-31 05:57:06

我更喜欢使用我的本地版本,因为我无法控制他们将提供什么。例如,我不希望我的用户受到 google-analytics 或任何类似的影响,因为这在我的国家是一个法律问题。