谷歌CDN上的最新jQuery版本

103

我在Google CDN的官方文档中读到,这是jQuery的src

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

然而,每次更新版本都必须更改我的jQuery src引用非常烦人。

我发现,如果我将版本设置为1,那么Google会返回最新版本的jQuery。

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
/*! jQuery v1.8.2 jquery.com | jquery.org/license */

这样做是否正确?是否有官方的URL可以引用托管在Google CDN上的最新版本的jQuery?

4个回答

183

更新于2014年7月3日: 目前,jquery-latest.js 不再更新。根据jQuery博客的说法:

我们知道http://code.jquery.com/jquery-latest.js被滥用,因为CDN统计数据显示它是最受欢迎的文件。如果只有开发人员使用它来制作本地副本,那么情况就不同了。

我们已经决定停止更新此文件以及缩小版,并将这两个文件永久保留在版本1.11.1。

Google CDN团队加入了我们的行动,以防止意外的网络中断,并不再更新http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js 。该文件也将保持在版本1.11.1。

以下内容现在已过时,在这里出于历史原因而被保留。


不要这样做。真的,不要这样做。

链接到jQuery的主要版本确实可以工作,但这是个坏主意,因为每个小数更新都会添加和弃用整个新功能。如果你自动更新jQuery而没有完全测试你的代码,你就冒着如果某个关键方法的API发生变化而导致无法预料的问题的风险。

以下是你应该做的:使用最新版本的jQuery编写你的代码。测试它,调试它,在准备好投入生产时发布它。

那么,当 jQuery 的新版本推出时,问问自己:我需要在我的代码中使用这个新版本吗?例如,是否存在一些关键的浏览器兼容性问题,以前不存在的问题,或者它能让我的代码在大多数浏览器中更快?

如果答案是否定的,则不必更新您的代码到最新的 jQuery 版本。这样做甚至可能会向您的代码添加之前不存在的新错误。没有一个负责任的开发人员会自动包含来自另一个站点的新代码而没有进行彻底测试。

没有充分的理由总是使用最新版本的 jQuery。旧版本仍然可用于 CDNs 上,如果它们适合您的目的,那么为什么要替换它们呢?


一个次要但可能更重要的问题是缓存。很多人链接到 CDN 上的 jQuery 是因为很多其他网站这样做了,并且您的用户有很大机会已经缓存了该版本。

问题是,只有提供完整的版本号才可以使用缓存。如果提供部分版本号,则远期缓存将无法使用,因为如果这样做,一些用户将从同一 URL 获得不同的 jQuery 次要版本(例如链接到 1.7 的链接一天可能指向 1.7.1,而另一天可能是 1.7.2。浏览器如何确保它今天获取的是最新版本?答案:没有缓存)。

事实上,这里有几个选项及其过期设置的细节...

http://code.jquery.com/jquery-latest.min.js (无缓存)

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js (1 小时)

http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js (1小时)

http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js (1年)

因此,通过这种方式链接jQuery,实际上您正在消除使用CDN的主要原因之一。


http://code.jquery.com/jquery-latest.min.js 有时可能不会给您期望的版本。截至本篇文章撰写时,它链接到最新版本的jQuery 1.x,尽管已发布了jQuery 2.x。这是因为jQuery 1.x与包括IE 6/7/8在内的旧版浏览器兼容,而jQuery 2.x不是。如果您想要最新版本的jQuery 2.x,则(目前)需要明确说明。

这两个版本具有相同的API,因此对于兼容的浏览器没有感知差异。但是,jQuery 1.x比2.x下载更大。


谢谢你的观点,但在我的情况下,使用最新版本更好。虽然如此,我在某种程度上同意你的观点,但一些新版本也修复了旧的错误。同时,最新版本更有可能被缓存,这是内容分发网络(CDN)的好处之一。 - Martin Borthiry
2
一个很好的例子是在任何 jQuery < 1.4 中开发,然后升级到 1.4 以上。访问属性和 ajax 请求处理 JSON 数据的回调方式发生了变化。 - scrappedcola
只是想澄清一下..我在问一个使用jQuery的简单页面...我理解你的好意,但我只是想知道谷歌是否提供获取最新版本的URL。 - Martin Borthiry
4
jQuery 1.9也引入了很多破坏性变化,多年来我因jQuery的向后兼容问题遇到了很多错误。我完全同意Blazemonger的建议。在任何情况下都不应简单地指向“最新的jQuery”URL。你将完全受制于jQuery团队,而新版jQuery的发布很容易导致网站崩溃。这不仅可能发生,而且很可能会在某个时候发生。 - Steve Wortham
很高兴学到缓存是基于版本详细级别的! - Tadas V.

8
我不知道它是否已经发布或发布在哪里,但是您可以省略次要版本和构建编号来获取最新版本的发布。
最新的1.8.x:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>

最新的1.x版本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

然而,请记住,这些链接的缓存超时时间比完整版本号短得多,因此您的用户可能会下载它们的频率比您想象的要高。有关更多信息,请参见Google CDN 引用 jQuery 1.x.0 中关键的 .0


1
您也可以从http://code.jquery.com/jquery.min.js获取最新版本,它通常会在其他CDN之前更新几天。 - Kevin B
虽然您可以通过这种方式获取最新的1.8.x版本,但是您无法通过类似的链接获取最新的1.9或任何较小的版本号。此外,“最新的1.x”链接当前指向1.11.1,而实际上最新的版本是1.11.3。 - Blazemonger
@Blazemonger,没错。这是我回答后发生的变化。你在更新中有一个很好的解释! - jrummell

8

如果你希望使用除了谷歌托管的jQuery库之外的其他jQuery CDN,你可以考虑使用这个,并且确保使用最新版本的jQuery:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

这个显示的是1.9.1而不是2.0。 - Phillip Senn
3
v2.x与v1.x不兼容。如果将该网址更新到v2,任何指向此网址的站点实际上都会使站点出现问题。 - Abdul Munim
那个链接已经不能拉出最新的1.x版本了。 - Blazemonger

3

使用由Google提供的最新版本jquery

人类:

  1. https://developers.google.com/speed/libraries/#jquery

  2. 获取代码片段:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

  1. 将其插入您的代码中。
  2. 确保它可以工作。

机器人:

  1. 等待人类完成操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接