2010-06-09 26 views
24

我建立目前使用JavaScript从几个来源网站:更好地结合&缩小JavaScript或使用Google CDN?

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

我使用贾斯汀Etheredge的工具SquishIt结合,然后再缩小所有的JavaScript FIL es托管在我的服务器上(组3)。

我想知道如果我要在本地托管(组2)中的文件,该网站是否会'感觉'更快,以便它们可以与(组3)中的所有其他文件组合并且只需要一个HTTP请求组2 & 3.这意味着我没有收到benefits of the Google CDN

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

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

回答

6

我认为这取决于您的用户已有缓存的访问其他网站使用相同资源的用户是否有可能访问该网站。

我认为使用CDN会更好,因为它被缩小了,有些可能文件根本不需要下载。结合和缩小一切。

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

3

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

  1. 合并Javascript文件 - 减少HTTP请求的数量从一个页面
  2. 涅槃Javacsript文件 - 减小文件大小
  3. 使用CDN - 减少传输延迟。

如果你能找到一种方法同时使用,其巨大的

虽然合并Javascript文件可以变成一个更加复杂的事情,不仅仅是涅槃他们。

,如果你想(亚马逊CloudFront的)

3

可能不会有太大的差别,您可以使用其他的CDN。

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

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

1

我正在合并,缩小(using closure)和使用(akamai)CDN。但对于网络性能的最重要的秘诀是:

  1. use never expire cache
  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); 
    })();