我正在构建一个目前使用来自多个来源的javascript的网站:
第1组: Google Maps API v3(由Google托管)
第2组: jQuery& swfobject(托管在谷歌CDN上)
第3组:几个jQuery插件和非jquery javascript文件(托管在我的服务器上)
我正在使用Justin Etheredge的工具SquishIt来合并和缩小我服务器上托管的所有javascript文件(第3组)。
我想知道如果我在本地托管(组2)中的文件,那么该网站是否会“感觉”更快,以便它们可以与(组3)中的所有其他文件组合,并且只需要一个HTTP要求团体2& 3.这意味着我没有得到benefits of the Google CDN。
有没有人对此事有任何建议?
修改 另外,我如何得出这个问题的基于数字的答案?这可能吗?
答案 0 :(得分:7)
我认为这取决于您的用户已经拥有通过访问使用相同资产的其他网站缓存的Google cdn文件的可能性。
我的观点是,使用CDN更好,因为它已经缩小,有时可能根本不需要下载文件。结合并缩小其他一切。
我有兴趣知道这些谷歌cdn库文件的全局缓存命中率。
答案 1 :(得分:3)
使用CDN并结合/缩小用于不同目的。如果你可以同时使用它们。
如果你能找到一种兼顾两者的方法,那就很棒了
虽然组合Javascript文件可能会变成更复杂的事情,而不仅仅是缩小它们。
如果需要,您可以使用其他CDN(Amazon CloudFront)
答案 2 :(得分:3)
可能不会产生太大影响。
javascript文件小而静态,将由用户的浏览器缓存。通过使用存储在Google CDN中的副本,您的用户甚至可能无需在首次访问您的网站时下载该脚本。
但是,通过使用Google副本,您还会引入对Google的依赖。如果他们的服务器停机(他们可能不会 - 至少在不久的将来不会),您的站点可能无法正常运行。
答案 3 :(得分:1)
我正在组合,缩小(using closure)和使用(akamai)CDN。但是网络性能最重要的提示是:
异步加载:您可以使用此脚本加载外部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);
})();