从服务器序列加载.js的故障转移?

时间:2011-09-16 17:42:39

标签: javascript loading failover

让我们想象一个需要加载javascript文件的网页(即my.js)。是否可以组织以下故障转移加载序列?

  1. 如果服务器A已启动,请从服务器A加载my.js
  2. 否则,如果服务器B已启动,请从服务器B加载my.js
  3. 否则,如果服务器C已启动,请从服务器C加载my.js
  4. ...
  5. 如果是,如何进行?感谢。

    P.S。:我刚刚找到yepnopejs。有人推荐它吗?

1 个答案:

答案 0 :(得分:3)

我已经看到这种技术允许在CDN关闭时进行回退。 如果你的js文件有一些可测试的属性,比如一个全局变量(我把它称为标记),你可以尝试从服务器A加载文件,测试标记,如果找不到脚本则再试一次。

<script type="text/javascript" src="http://server_A.tld/my.js"></script>
<script type="text/javascript">
if( !window.marker ) {
    document.write(
        '<script type="text\/javascript" src="http:\/\/server_B.tld\/my.js"><\/script>'
    );
}
</script>

更新 所有脚本都没有使用这种技术运行的危险。 John Resig explains this in a blog post.。脚本可以按任何顺序并行下载,但必须按顺序执行。

Here is a fiddle that demonstrates