使用两个CDN服务器来加载Javascript库是否有什么坏处?

3

客户的网站依赖于jquerytools.org CDN,但目前该CDN不可用,因此他的网站出现了问题(忽略优雅的JavaScript降级)。他可以在本地托管相关文件,但这样他就无法享受CDN的好处。从冗余性的角度考虑,在两个独立的CDN上引用表面上相同的Javascript文件有多糟糕?

<script src="http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js"></script>
<script src="http://jquerytools.flowplayer.netdna-cdn.com/1.2.6/all/jquery.tools.min.js"></script>
3个回答

5

在加载第二个脚本之前,您应该检查第一个CDN是否已经成功地提供了jQuery:

<script src="http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js"></script>
<script type="text/javascript">
if (typeof jQuery.tools === 'undefined') {
    document.write('<script src="http://jquerytools.flowplayer.netdna-cdn.com/1.2.6/all/jquery.tools.min.js"><\/script>');
}
</script>

1
不要忘记转义 </script> - Bergi
谢谢。所有的答案都很相似,但我喜欢这个显式的 if。而且,你回答得最快! - dotancohen

3
您可以轻松且安全地使用来自 http://html5boilerplate.com 的方法完成此操作:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>

这基本上是测试jQuery对象,如果不存在,则尝试从替代源包含它。只需更改URL和对象测试以使用您的替代CDN并测试jQuery工具库。

这个答案:测试是否已加载jQuery Tools应该可以帮助您测试jQuery工具,但为了节省您的时间,以下代码(未经测试)可行:

<script type="text/javascript" src="http://cdn.jquerytools.org/1.2.7/full/jquery.tools.min.js"></script>
<script>window.jQuery.fn.tabs || document.write('<script src="http://jquerytools.flowplayer.netdna-cdn.com/1.2.6/all/jquery.tools.min.js"><\/script>')</script>

2

我不会同时加载它们。对于jQuery,我们执行以下操作:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="/static/js/jquery-1.7.1.min.js"%3E%3C/script%3E'))</script>

如果CDN版本加载失败,只加载本地版本。我不确定这是否是最佳实践,但它对我们起作用。当然,您需要找到一种方法来识别jquery-tools是否已加载。如果稍后初始化(DomReady)或类似的操作,则此方法将无法使用。


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