Отказоустойчивая загрузка .js из последовательности серверов? - PullRequest
4 голосов
/ 16 сентября 2011

Давайте представим, что страница веб-страницы должна загрузить файл javascript (т.е. my.js). Можно ли организовать следующую последовательность загрузки при сбое?

  1. Если сервер А работает, загрузите my.js с сервера А.
  2. Иначе, если сервер B работает, загрузить my.js с сервера B.
  3. Иначе, если сервер C запущен, загрузить my.js с сервера C.
  4. ...

Если да, как действовать? Спасибо.

P.S .: Я только что нашел yepnopejs . Кто-нибудь рекомендует?

1 Ответ

3 голосов
/ 16 сентября 2011

Я видел эту технику, чтобы разрешить откат, если CDN не работает. Если в вашем js-файле есть какое-то свойство для проверки, например, глобальная переменная (я назвал его маркером), вы можете попытаться загрузить файл с сервера А, проверить его на наличие маркера и, если он не найден, выполнить еще одну попытку.

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

Обновление Нет опасности, что все сценарии будут выполняться с использованием этой техники. Джон Ресиг объясняет это в своем блоге. . Скрипты могут загружаться параллельно и в любом порядке, но они должны выполняться по порядку.

Вот скрипка, которая демонстрирует

...