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>
4

3 回答 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>
于 2013-02-05T10:10:36.203 回答
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 工具库。

这个答案:测试 jQueryTools 是否已加载应该可以帮助您测试 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>
于 2013-02-05T10:11:20.943 回答
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)或类似的东西,这将不起作用。

于 2013-02-05T10:10:46.127 回答