代码之家  ›  专栏  ›  技术社区  ›  ataylor

我应该使用托管版本的jquery吗?哪一个?

  •  11
  • ataylor  · 技术社区  · 16 年前

    我应该使用jquery的本地副本,还是应该链接到谷歌或微软提供的副本?我主要关心速度。我听说,仅仅从其他域中提取内容就可以获得与浏览器限制连接方式相关的性能优势。特别是,有没有人基准测试谷歌与微软与本地的速度和延迟?

    另外,我是否必须同意从第三方链接的任何条件或许可?

    7 回复  |  直到 14 年前
        1
  •  11
  •   baloo    16 年前

    一个好处是,由于另一个站点也链接到了第三方,用户可能已经缓存了它。

    我一直在使用谷歌,到目前为止还没有遇到任何问题。 您可以使用以下方法轻松加载jquery:

    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
        google.load("jquery", "1.4");
    </script>
    
        2
  •  7
  •   3Dave    16 年前

    每当您使用由第三方托管的资产时,都会增加应用程序中可能出现的故障点的数量。您还可能因托管方对资产所做的更改(例如,修复错误或更新到新版本)而导致潜在的错误。

    由于站点和主机之间的延迟差异,页面性能可能会受到影响。客户机和主机之间的网络中断可能会导致您的页面出现故障,其ISP的Internet过滤也可能会出现故障。 例如,使用Google托管的代码会给从中国访问您的网站的任何人带来问题。 .

    为了安全、性能、稳定性和版本完整性,最好将所有资产放在一个地方。除非你的网站流量高得离谱,否则你不应该担心发布你的内容。

    值得注意的是,虽然jquery不是一个轻量级的include,但它并不是一个令人讨厌的大,与任何javascript include一样,它应该(但不保证)被浏览器缓存。

        3
  •  6
  •   orandov    16 年前

    我看到的大多数建议都是使用托管版本的谷歌或微软等。

    戴夫·沃德有一篇很好的文章解释了原因。

    3-reasons-why-you-should-let-google-host-jquery-for-you

    1. 降低延迟
    2. 提高并行性
    3. 更好的缓存

    查看他的帖子获取数据。

    戴夫确实指出你应该只为 面向公众 网站。

        4
  •  3
  •   David Souther    16 年前

    我一直在为几个客户在生产中使用谷歌的Ajax库托管。工作起来很有魅力,绝对是最好的方式。

    http://code.google.com/apis/ajaxlibs/

        5
  •  2
  •   Justin Niessner    16 年前

    我建议从jquery提供的cdn加载jquery:

    http://code.jquery.com/jquery-1.4.2.min.js

    您不必注册任何帐户,源文件将尽可能从用户附近下载,并且您不必担心许可问题。

        6
  •  2
  •   David    16 年前

    我建议您始终托管自己的本地副本。

    • 服务器可能会停机。
    • 服务器可以更改托管文件的版本。
    • 您的用户可以随意地在托管服务器上创建过多的负载,他们可能对此并不感到兴奋。

    我认为在发布要“工作”的示例代码时使用托管链接是合理的,用户不必下载jquery。

        7
  •  2
  •   cdeszaq Sudhir N    14 年前

    我愿意 强烈地 至少推荐 尝试 出于其他人提到的原因,要使用库的托管版本,但同时,我也建议使用您自己的托管版本。

    用起来可能有点疯狂 二者都 但第三方图书馆主机并非100%可靠,可能会出现故障。在这些罕见的情况下,能够有一个备份是很好的,这正是 HTML5Boilerplate project 推荐。

    以下是项目中的代码片段,该项目从Google的服务加载jquery,如果失败则返回到本地托管的副本:

    <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
    

    据我所知, 只有 对于普通的“本地拷贝”或“第三方”策略来说,可能根本不存在这种情况,因为存在一个额外的查找(总是)来查看从第三方加载库的尝试是否成功。然而,对于这种方法给你带来的所有好处来说,这是一个非常小的代价。

    另一方面,同样的策略也可以用于 任何 多服务器托管场景,因此您(和我)可以将其用于其他库,如jquery ui。

    您还可以将其扩展为使用多个第三方,因此如果Google关闭,您可以返回到Microsoft的托管版本,然后根据需要返回到本地托管副本。

    最后,这种方法也是与协议相关的,因此在 http https 不会引起任何浏览器对不安全页面元素的投诉的页面。