加载 jQuery 的最佳方式是啥? [复制]

Posted

技术标签:

【中文标题】加载 jQuery 的最佳方式是啥? [复制]【英文标题】:What's the best way to load jQuery? [duplicate]加载 jQuery 的最佳方式是什么? [复制] 【发布时间】:2012-09-02 04:46:03 【问题描述】:

可能重复:Where do you include the jQuery library from? Google JSAPI? CDN?

我有一个使用 jQuery 的应用程序。该应用程序可以使用几乎任何最新版本的 jQuery,例如 1.7 或 1.8。

谁能给我一个建议,告诉我如何编码我的应用程序,以最大限度地提高它在用户缓存中找到满足我需求的最新版本的 jQuery 的机会。例如,我应该尝试从 google CDN 中查找一个版本,在哪种情况下我应该尝试查找哪个版本?

【问题讨论】:

不应标记为重复。 “副本”很拥挤,包含过时的信息。这是最新的 【参考方案1】:

在公共网站上使用内容交付网络 (CDN) 非常普遍。要引用一个,您可以像任何其他本地文件一样将它们包含在脚本标记中:

jQuery 示例

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

谷歌示例

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

微软示例

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.min.js" type="text/javascript"></script>

我应该始终参考最新版本吗?

这样做存在风险,例如使用 jQuery CDN 始终指向最新版本时。

在最近的几个版本中,一些方法已被弃用,即:toggle() - 用于鼠标事件、live()die() 等。

据我从 jQuery 论坛了解,那些已弃用的方法将在 1.9 版中永久删除。

此外,jQuery 计划同时发布 1.9 和 2.0。然而 2.0 不是 1.9 的延续,而是将同时开发。

2.0 将不支持 IE6、IE7 或 IE8。 jQuery 1.9 将与所有以前的浏览器版本保持兼容。

阅读here

出于这些原因,我不建议自动始终指向最新版本,而是明确引用您支持的特定版本。

如果 CDN 宕机了怎么办

这种情况很少发生可能会发生 CDN 关闭的情况。以防万一,让您不必承担后果,您可以实施后备计划。

// Check if jQuery was initialized and if not (CDN was down for example), then
// load jQuery from a local source.
if(typeof jQuery === 'undefined')
    document.write(unescape("%3Cscript src='yourlocalpath/jquery.1.x.min.js' type='text/javascript'%3E%3C/script%3E"));

CDN 可用性和性能评估

关于可用 CDN 的质量和性能,我在Royal.pingdom.com 上遇到了这个非常有趣的article

Pingdom 的报告显示,jQuery 最常用的免费主机;谷歌、微软和Media Temple;已被证明是可靠的,但性能不一致。

为了评估网络,Pingdom 在欧洲和北美的多个地点进行了测试,每分钟一次,全天候 30 天。

结果发现这三个都提供了出色的可用性,但性能却并非如此。

对于不使用 HTTPS 或安全服务器的网站,Media Temple 是迄今为止速度最快的网站,Google 在欧洲紧随其后,但在北美却落后。对于 HTTPS 网站,Google 是欧洲最快的,Google 和 Microsoft 在北美的表现相似。

微软在欧洲的表现最差,但总体上与谷歌在北美的表现不相上下。

【讨论】:

+1 很棒的解释! 是拼写错误还是故意让 Google 版本缺少 type="text/javascript"【参考方案2】:

选择满足您需求的最新版本的 jQuery。此时,将是 1.8。然后在免费且广泛使用的 CDN(可能是 Google 或 Microsoft)上链接到它。

您应该链接到特定版本的 jQuery。虽然有最新版本的 jQuery 的链接,但您不应该链接到该链接,因为当它发生变化时,您的网站可能会在您不知情的情况下崩溃。您应该只链接到特定版本的 jQuery。这是在 Google CDN 上链接到 1.8.1 的代码。

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

如果你真的想优化你的浏览器缓存命中,你会选择并使用现在广泛部署的 jQuery 版本进行测试(我相信某处有关于每个版本的使用量的网络统计数据)然后你会定期更新以跟踪最常用的版本。我怀疑这是微优化,只选择您测试过的任何最新版本都是合适的,并且会给您带来使用通用 CDN 的好处。

【讨论】:

【参考方案3】:

我建议从Google 或Microsoft CDN 引用静态版本号。立即使用最新版本进行开发。如果您进行需要更新功能的更改,只需更改布局中的参考即可。

Google CDN 如下所示:

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

【讨论】:

【参考方案4】:

最新版本可以直接从jQuery加载:

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

您还可以从中加载其他 Content Delivery Networks。

一些流行的 CDN 是:

jQuery (code.jquery.com) 微软 (ajax.microsoft.com) 谷歌 (ajax.googleapis.com)

【讨论】:

我想使用 CDN,但最好选择哪一个,我应该如何对其进行编码以查找最有可能在缓存中的 jQuery? 当您在 Google、jQuery 或 Microsoft 之间做出选择时,这并不重要。它们都具有相似的可靠性和性能。 链接到jquery-latest.min.js 是很危险的,因为 jQuery 可能会在未来的版本中进行更改,这可能会破坏您的网站(这种情况一直都在发生),而您的网站会自动继承并被破坏。

以上是关于加载 jQuery 的最佳方式是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

重新加载/刷新 iframe 的最佳方式是啥?

在 android 上加载 HTML 内容列表的最佳方式可能是啥?

为现代 Web 浏览器加载网站图标的最佳方式是啥?

为 UWP 应用加载不同语言的不同文本文件的最佳方式是啥?

在 WPF 控件上显示“加载”指示器的最佳方法是啥

使用 Firestore 在 Flutter 中加载配置文件数据的最佳方式是啥?