最好将JavaScript合并和压缩还是使用Google CDN?

26

我正在建设一个网站,目前使用了几个来源的JavaScript:

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

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

我想知道如果我将(组2)中的文件本地托管,是否会让用户感觉到网站更快,因为这样它们可以与(组3)中的所有文件合并,并仅需要一个 HTTP 请求来获取组2和3的文件。但这意味着我不会得到 Google CDN 的好处

有人对此有什么建议吗?

编辑: 此外,如何得出基于数字的答案?这可能吗?

4个回答

8

我认为这取决于您的用户是否有可能已经从访问使用相同资源的其他网站缓存了Google CDN文件。

我的意见是最好使用CDN,因为它被压缩,并且有些情况下文件根本不需要下载。将所有其他内容组合并压缩。

我很想知道那些Google CDN库文件的全局缓存命中率和未命中率。


3
使用CDN和合并/缩小文件有不同的目的。如果您可以同时使用两者。
  1. 合并Javascript文件-减少页面上的http请求次数
  2. 缩小Javascript文件-减小文件大小
  3. 使用CDN-提高延迟。

如果您可以找到同时使用两者的方法,那就太好了。

尽管合并Javascript文件可能会变得比仅仅缩小它们更加复杂。

您可以使用其他CDN(如Amazon CloudFront)。


3

可能不会有太大的影响。

Javascript文件很小且静态,用户的浏览器将缓存它们。通过使用存储在Google CDN中的副本,您的用户甚至可能无需在第一次访问您的站点时下载脚本。

但是,通过使用Google的副本,您也引入了对Google的依赖关系。如果他们的服务器崩溃(虽然他们可能不会 - 至少在不久的将来),您的网站可能无法正常运行。


1

我正在结合、压缩(使用Closure)和使用(Akamai)CDN。但是对于Web性能来说,最重要的提示是:

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

    (function() {
      setTimeout(function(){
        var sc = document.createElement('script'); sc.type = 'text/javascript'; sc.async = true;
        sc.src = 'yourfile';
       (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(sc);
      },0);
    })();
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接