26

我正在构建一个当前使用来自多个来源的 javascript 的站点:

第 1 组: Google Maps API v3(由 Google 托管)
第 2 组: jQuery 和 swfobject(在 Google CDN 上托管)
第 3 组:几个 jQuery 插件和非 jquery javascript 文件(托管在我的服务器上)

我正在使用 Justin Etheredge 的工具SquishIt来组合和缩小托管在我的服务器上的所有 javascript 文件(第 3 组)。

我想知道如果我要在本地托管(第 2 组)中的文件,以便它们可以与(第 3 组)中的所有其他文件组合并且只需要对组的一个 HTTP 请求,该站点是否会让用户“感觉”更快2 & 3。这意味着我没有得到谷歌 CDN 的好处

有人对此事有任何建议吗?

编辑: 另外,我将如何得出这个问题的基于数字的答案?那可能吗?

4

4 回答 4

8

我认为这取决于您的用户已经通过访问使用相同资产的另一个站点缓存了 google cdn 文件的可能性有多大。

我的观点是使用 CDN 更好,因为它被缩小了,而且文件很可能根本不需要下载。合并并缩小其他所有内容。

我很想知道这些 google cdn 库文件的全局缓存命中率。

于 2010-06-09T21:34:14.707 回答
3

使用 CDN 和组合/缩小服务于不同的目的。如果两个都可以用。

  1. 组合 Javascript 文件 - 减少来自页面的 http 请求数
  2. 缩小 Javacsript 文件 - 减小文件大小
  3. 使用 Cdn - 改善延迟。

如果您能找到一种同时使用两者的方法,那就太好了

尽管合并 Javascript 文件可能会变成一件更复杂的事情,而不仅仅是缩小它们。

如果需要,您可以使用其他 CDN (Amazon CloudFront)

于 2010-06-09T21:29:18.273 回答
3

可能不会有太大的不同。

javascript 文件很小而且是静态的,并且会被用户的浏览器缓存。通过使用存储在 Google CDN 中的副本,您的用户甚至可能不必在他们第一次访问您的网站时下载脚本。

但是,通过使用 Google 副本,您还引入了对 Google 的依赖。如果他们的服务器出现故障(他们可能不会 - 至少在不久的将来不会),您的网站可能无法正常运行。

于 2010-06-09T21:29:29.240 回答
1

我正在组合、缩小(使用闭包)和使用(akamai)CDN。但是对于 Web 性能最重要的提示是:

  1. 使用永不过期缓存
  2. 异步加载:您可以使用此脚本加载外部 js 文件

    (function() {
      setTimeout(function(){
        var sc = document.createElement('script'); sc.type = 'text/javascript'; sc.async = true;
        sc.src = 'youfile';
       (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(sc);
      },0);
    })();
    
于 2010-06-10T01:57:59.597 回答