问题
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?
- If server A is up, load
my.js
from server A. - Else, if server B is up, load
my.js
from server B. - Else, if server C is up, load
my.js
from server C. - ...
If yes, how to proceed? Thanks.
P.S.: I have just found yepnopejs. Does anyone recommend it?
回答1:
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
来源:https://stackoverflow.com/questions/7448449/failover-loading-of-js-from-sequence-of-servers