包含脚本,使用CDN(Google)或将其存储在网站根目录中的速度有多快?
答案 0 :(得分:36)
如果你的意思是核心jQuery库,use the google CDN用于面向互联网的网站(而不是内部网站)。
CDN具有以下优势,您将难以与之竞争:
虽然您可以像他们一样配置缓存标头,但您可能无法更快地提供文件。话虽这么说,图书馆/ CDN只是这个难题的一部分。您拥有的其他插件和代码也应该是minified, combined和served via gzip。
答案 1 :(得分:5)
取决于您的服务器速度。然而,CDN可能更快,您的客户可能已经从另一个网站缓存了该文件。
它会从您的网站卸载大量带宽,但是您依靠第三方的稳定性来维护该文件。 (虽然我很快就看不到谷歌有问题了)
答案 2 :(得分:4)
Google CDN :-)
1)从缓存的角度优化
2)用户从更优的CDN节点接收资源
答案 3 :(得分:3)
不幸的是,研究最近表明,谷歌CDN实际上阻碍了表现。
Google的AJAX Libraries API尝试使用网络效果,通过提供通用共享缓存来提高所有参与网站的效果。然而,最近的研究发现,很少有人使用网络来达到临界质量并实际上提高网络性能。目前使用网络的开销意味着使用谷歌的AJAX Libraries API实际上降低了性能。您应该在本地托管JavaScript文件。这将增加您的bandwdith消耗,但会提高页面加载速度。来自Zoompf.com效果报告说明。
答案 4 :(得分:1)
我会说谷歌的CDN是出于其他人所说的原因。
但是,如果您的目标市场非常靠近您的服务器,那么最好从您的服务器进行服务。
比如说,你有一个网站forOrlandoFloridaPeopleOnly.com/。如果您的服务器托管在佛罗里达州奥兰多市,并且Google最近的内容分发服务器位于佛罗里达州迈阿密和佐治亚州亚特兰大(这是真的),如果访问者还没有缓存副本,您的服务器可能会更快来自Google CDN的文件。
请记住,如果您确实向访问者提供静态内容,请尝试使用子域或其他方式并行化下载。为了善意,请不要为静态内容传输cookie。
我不确定这个来源有多可靠:Google data centers。所以不一定指望它。
答案 5 :(得分:1)
将它们存储在localStorage / web存储中的速度更快。我已经创建了一个小型库来完成这项工作,结果非常有说服力
你可以查看https://github.com/webpgr/cached-webpgr.js处的代码,它很小,你可以在几分钟内阅读并理解所有代码。
以下是如何使用它的完整示例。
完整的图书馆:
function _cacheScript(c,d,e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4==a.readyState&&(200==a.status?localStorage.setItem(c,JSON.stringify({content:a.responseText,version:d})):console.warn("error loading "+e))};a.open("GET",e,!0);a.send()}function _loadScript(c,d,e,a){var b=document.createElement("script");b.readyState?b.onreadystatechange=function(){if("loaded"==b.readyState||"complete"==b.readyState)b.onreadystatechange=null,_cacheScript(d,e,c),a&&a()}:b.onload=function(){_cacheScript(d,e,c);a&&a()};b.setAttribute("src",c);document.getElementsByTagName("head")[0].appendChild(b)}function _injectScript(c,d,e,a){var b=document.createElement("script");b.type="text/javascript";c=JSON.parse(c);var f=document.createTextNode(c.content);b.appendChild(f);document.getElementsByTagName("head")[0].appendChild(b);c.version!=e&&localStorage.removeItem(d);a&&a()}function requireScript(c,d,e,a){var b=localStorage.getItem(c);null==b?_loadScript(e,c,d,a):_injectScript(b,c,d,a)};
调用库
requireScript('jquery', '1.11.2', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function(){
requireScript('examplejs', '0.0.3', 'example.js');
});
答案 6 :(得分:0)
值得注意的是,Visual Studio在使用Google的CDN Intellisense方面存在问题。微软还有一个允许Intellisense正常运行的CDN。但是,是的,请使用CDN。