Search code examples
javascriptloadingfailover

Failover loading of .js from sequence of servers?


Let's imagine a web page page needing to load a javascript file (i.e. my.js). Is it possible to organize the following fail-over loading sequence?

  1. If server A is up, load my.js from server A.
  2. Else, if server B is up, load my.js from server B.
  3. Else, if server C is up, load my.js from server C.
  4. ...

If yes, how to proceed? Thanks.

P.S.: I have just found yepnopejs. Does anyone recommend it?


Solution

  • I have seen this technique to allow a fallback if a CDN is down. If your js file has some testable property like a global variable (I've called it marker), you can attempt to load the file from server A, test for the marker and if it is not found script another attempt.

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

    Update There is no danger that all the scripts will run using this technique. John Resig explains this in a blog post.. Scripts can download in parallel and in any order but they must execute in order.

    Here is a fiddle that demonstrates