【问题标题】:Should I link to Google API's cloud for JS libraries?我应该链接到 Google API 的 JS 库云吗?
【发布时间】:2010-10-30 12:00:43
【问题描述】:

我正在寻找从 Google API 的云中提取 jQuery 和其他 JS 库而不是直接下载文件和部署的优缺点。

你说什么?


我的决定

lib 已经缓存在用户系统上的可能性对我来说是最重要的因素,因此我将使用指向 googleapis.com 的永久链接(例如 ajax.googleapis.com/ajax/libs/...)。我同意这里的其他人的观点,即失去对 Google 服务器云的访问权限是最小的问题。

【问题讨论】:

    标签: javascript jquery dependencies


    【解决方案1】:

    骗局

    • 被美国禁运的国家(例如伊朗)的用户不会收到 Google 的回复
    【解决方案2】:

    优点:它可能已经缓存在用户的系统上。谷歌有很大的管道。您无需为带宽付费。

    缺点:您现在有两种不同的方式使您的网站变得不可用:您的服务器上的服务中断或 Google 的服务器上的一种中断。

    【讨论】:

    • Google 有很多冗余,谁知道有多少数据中心,所以虽然 Google 端存在中断的风险,但它很小,几乎可以忽略不计。
    • Google 最近至少发生了两次大中断。 news.google.com/…
    • 另一个优点是您的某些内容由不同的域提供服务,因此用户在大多数浏览器内置的“每个域两个连接”规则上花费的时间更少。
    • @Ben:这对于任何合理配置的浏览器缓存来说都是一个非常小的考虑因素。也适用于“中断风险”,它更恰当地表示为“与用户缓存到期同时发生的中断风险。
    • @Nosredna:HTTP 响应的 max-age 为 31536000 秒或 1 年。
    【解决方案3】:

    我一直在研究 jQuery 的 Google 加载程序的实际性能,特别是,这是我发现的:

    1. Google 的服务器速度快且非常可靠。
    2. 他们通过 CDN 提供服务,这意味着如果您有很多海外用户,他们将获得更多更好的加载时间。
    3. 它们提供 gzip 压缩文件。所以他们提供的字节数比他们需要的多得多。

    如果您知道自己在 Apache、Lighttpd 或任何用于提供文件的服务中做什么,则可以像 Google 一样设置缓存标头,并通过提供服务显着减少最终用户必须下载的数据量从你自己的服务器。您还可以在此时组合您的脚本并减少您的整体 HTTP 请求。

    底线:Google 的表现不错,但不是很好。如果您有很多海外用户,那么 Google 可能会更好,如果您的用户大多是美国用户,并且您关心的是最大性能,请学习缓存、Etags、gzipping 等并自己提供服务。

    【讨论】:

    • 根据此页面,它们是否未压缩取决于您是否将 {uncompressed:true} 广告到加载调用。这是不正确的吗? code.google.com/apis/ajaxlibs/documentation/index.html#jquery
    • 这将提供 JS 文件的非缩小版本。它仍然不进行 gzip 压缩,这可以再减少 30-60% 的文件大小。
    • 他们现在正在压缩文件,因此您列表中的第三项已过时。
    【解决方案4】:

    优点:

    • Google 的连接性可能比你的好很多
    • 这是一个免费的 CDN(内容分发网络)
    • 您的网络应用可能加载速度更快,因为您使用的是 CDN

    缺点:

    • 如果/当您需要通过重新打包该第三方 JS 库的子集来进行优化时,您只能靠自己,而您的 web 应用可能加载速度会变慢

    【讨论】:

      【解决方案5】:

      除了其他人提出的观点之外,我还要指出两个额外的缺点:

      • 一个额外的外部 HTTP 请求,因此假设您有一个自己的 Javascript 文件(几乎可以肯定),该文件最少两个而不是一个;和
      • 恕我直言,因为 jQuery 加载是异步的,您的整个页面可以在库加载之前加载,因此您对文档就绪所做的效果有时会在应用时对用户明显可见。我认为这不是很好的用户体验。

      【讨论】:

      • 除非您在某个 Intranet 上,否则为什么“外部”请求不好?它只是使并行加载更容易。 (大多数浏览器限制到同一服务器的连接数,而不是不同服务器的连接数。)
      【解决方案6】:

      优点很明显,并且在其他答案中:

      • 您节省带宽
      • google 可能比你的服务器更可靠
      • 可能缓存在大多数浏览器中(有人对此进行统计吗?)

      但缺点可能非常棘手:

      • 如果您使用 https,在大多数浏览器上都会出现错误,因为您的证书对 google 的域无效,仅对您的域有效。这是 https 的一个主要问题。

      【讨论】:

        【解决方案7】:

        我认为最酷的做法是运行 A/B 测试并查看从 Google 的服务器与您的服务器加载缩小版 jquery 的延迟是多少。希望这会让事情变得正确。 Google 服务器可能会更快,但在承担停机责任方面,没有什么比自己托管更好了。

        【讨论】:

        • 但不要忘记,jQuery 如此受欢迎,以至于用户可能已经在其他地方使用过 Google 的副本,因此它被缓存在用户的计算机上,以获得巨大的收益和更少的 http 请求。跨度>
        【解决方案8】:

        专业版:

        Google 的 Ajaxlibs 为包含的库提供了非常精细的“版本控制”。您可以强制执行某个版本(例如 JQuery 1.3.2)或自动从某个分支请求最新版本(例如 JQuery 1.3 系列 -> 目前将提供 1.3.2,但可能很快会提供 1.3.3)。

        后者肯定有好处:您将受益于较小的错误修复/性能改进,而不会破坏您的脚本/插件。

        自行维护这样一个多库存储库可能会占用大量资源。

        【讨论】:

          【解决方案9】:

          缺点:

            1234563 (但是:缓存设置为to be a full year,因此即使许多浏览器在刷新时会发出If-Modified-Since 请求缓存内容,这可能仍然是一个理论上的问题,因为大多数用户在使用另一个网络时已经缓存了资源。 )
          • 如果要特别注意访问者的隐私,您可能不希望 Google 使用其 CDN 记录对您网站的访问。 (也很理论,因为同样适用于缓存。)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-22
            • 2019-06-02
            • 1970-01-01
            • 2021-02-22
            • 2017-03-20
            • 2013-04-13
            • 1970-01-01
            • 2016-09-18
            相关资源
            最近更新 更多