【问题标题】:To jQuery or not to jQuery?使用 jQuery 还是不使用 jQuery?
【发布时间】:2026-01-19 00:45:01
【问题描述】:

我更喜欢在我一​​直在开发的网络社区中添加实用的视觉效果,但随着事情开始堆积,我担心加载时间。

  1. 拥有用户真的更快吗 加载(希望缓存的)副本 来自 Google 存储库的 jquery?

  2. 是否使用 jQuery 进行 AJAX 调用 提高/降低基本效率 javascript xmlHTTP 请求?

  3. 有没有一种实用的方法可以减少包含的脚本数量?例如,我包含了来自 google 的 jQuery 和 jQuery UI、表格排序器和咆哮插件。

【问题讨论】:

    标签: jquery performance load xmlhttprequest


    【解决方案1】:

    1.让用户从 Google 存储库加载(希望缓存的)jquery 副本真的更快吗?

    是的。 Google 的服务器地理位置优越,可以从离用户最近的位置为页面提供服务,以提高性能。

    2.使用 jQuery 进行 AJAX 调用是否会比基本的 javascript xmlHTTP 请求提高/降低效率?

    jQuery 在内部使用XmlHttpRequest,因此不会更快。它只会和浏览器的 XmlHttpRequest 实现一样快。

    3.有没有一种实用的方法可以减少包含的脚本数量?例如,我包含了来自 google 的 jQuery 和 jQuery UI、表格排序器和咆哮插件。

    要减少脚本,您必须自己组合它们并将它们托管在您自己的服务器/CDN 上。谷歌只提供a limited set of popular AJAX frameworks

    jQuery 真正闪耀的地方在于它的抽象层,它可以帮助您避免处理跨浏览器的不兼容问题。在这方面,它做得相当不错。

    就性能而言,它也击败了许多其他 JavaScript 框架。请记住,任何时候添加抽象层,都会损失一些运行时性能。如果您失去运行时性能,您可以通过为开发人员节省成本来弥补,因为他们可以轻松开发 JavaScript 代码。

    总的来说,我不会太在意 jQuery 的性能,除非你注意到它会成为一个问题。在这种情况下,请尝试识别瓶颈并优化它们。简单地使用 jQuery 几乎从来都不是网站速度慢的原因。

    【讨论】:

    • 一个小问题,但是虽然谷歌的服务器分布式的,它也是一个额外的 DNS查找网络路由服务请求所必需的。
    • @Cez,这是一个有效的观点。谷歌的 AJAX CDN 的好处是谷歌应该有足够的影响力,从统计上讲,用户可能已经缓存了文件。这将完全保存文件传输。
    • 一个公平的观点是,客户端更有可能已经缓存了文件。但是,这取决于清除客户端缓存的频率。此外,我在英国,我获得了 ajax.googleapis.com 的美国 IP 地址,但跨大西洋流量通常会出现滞后,因此客户端的平均位置也是决定是否更好的一个因素使用 Google 或与网站相同的服务器。
    【解决方案2】:

    1.让用户加载(希望缓存的)副本真的更快吗? 来自 Google 存储库的 jquery?

    可以,除非你的计算机没有连接到互联网。如果它是一个公司应用程序并且脚本在本地可用,我无法想象需要使用 Google 的服务器。 p>

    2. 使用 jQuery 进行 AJAX 调用是否比基本的提高/降低效率 javascript xmlHTTP 请求?

    使用 jQuery 的主要原因是它非常有用,并且它抽象了浏览器的差异。这些好处远远超过了使用裸机 Javascript 编写 Ajax 调用可能获得的任何微小的性能提升。

    3.有没有一种实用的方法可以减少包含的脚本数量?为了 例如,我包括 jQuery 和 jQuery 来自谷歌的用户界面、表格排序器和 咆哮插件。

    如果您想要所有这些功能,则不需要。

    JQuery UI 允许您下载自定义脚本集合,其中仅包含您需要的功能。

    【解决方案3】:
    1. 除非您的服务器比 Google 的服务器更近且更快(这极不可能,除非在 Intranet 中),否则从 Google 加载总是更快。

      即使您的服务器比 Google 的服务器更接近和更快,它们仍然会更快,除非副本没有被缓存并且您从不同的域加载它。 (因为每台服务器只能连接两个连接)

    2. jQuery $.ajax 调用和原始 XMLHTTPRequest 之间应该没有可测量的差异。 (除非您进行数百万次 AJAX 调用,在这种情况下您还有其他问题)
      但是,jQuery 的 API 更容易使用。

    3. 您可以将所有 jQuery 插件粘贴到一个(缩小的)文件中。
      目前最好的缩小器是谷歌的Closure Compiler,其次是微软的AjaxMin

    【讨论】:

    • 谢谢,这些信息很有帮助,我不知道 Closure 编译器
    【解决方案4】:

    从 Google 存储库加载 jQuery 是否更快取决于很多因素。谷歌有很多服务器,所以如果你的用户分布在世界各地,它可能更接近谷歌服务器而不是你的服务器。另一方面,浏览器必须打开另一个速度较慢的连接。您可以期望的唯一真正优势是该文件已经在缓存中,因此根本不需要加载它。

    使用 jQuery 进行 ajax 调用并不比自己做更有效率。您获得的是使用现成的库更容易。

    要减少请求的文件数量,您可以将它们合并到一个文件中。另一方面,这意味着您将使用所有页面上的所有库。即使文件被缓存,浏览器仍然需要解析所有代码。

    【讨论】:

      【解决方案5】:

      Q1:让用户从 Google 存储库加载(希望缓存的)jquery 副本真的更快吗?

      第一次加载后浏览器不会简单地缓存javascript吗?我认为如果你从谷歌或你自己的服务器加载它是无关紧要的。

      我建议你提供你自己版本的 jQuery 库,以免将来升级 jQuery 时停用你在 2 年前编写的应用程序中使用的函数。 (如果你使用google最新的jQuery.js)

      Q2:使用 jQuery 进行 AJAX 调用会比基本的 javascript xmlHTTP 请求提高/降低效率吗?

      这里没有效率变化。只会让您更容易编程。

      Q3:有没有一种实用的方法可以减少包含脚本的数量?例如,我包含了来自 google 的 jQuery 和 jQuery UI、表格排序器和咆哮插件。

      谁在乎包含的脚本数量?这不应该是您的设计决策中的一个因素。如果您需要它,请使用它。如果你不这样做,那么不要包括它。将所有库托管在运行应用程序的服务器上,无需担心。

      【讨论】: