2016-02-10 4 views
-1

Я использую пакет сценариев в приложении MVC, чтобы загрузить скрипт из CDN, используя код ниже:CDN механизм сценарий восстановления

bundles.Add(new ScriptBundle("~/bundles/jqueryValidate", "//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js").Include("~/Scripts/jquery.validate.min.js")); 

Если CDN не удается, следует загрузить сценарий из локального хранилища (от внутри проекта).

Я добавил:

bundles.UseCdn = true; 

и

BundleTable.EnableOptimizations = true; 

, чтобы убедиться, что CDN загружается первым.

Когда я пытаюсь использовать свою сеть (общедоступную сеть), она работает нормально: скрипт загружается из CDN без каких-либо проблем.

Если я пытаюсь подключиться к сети моего клиента (корпоративной сети), CDN заблокирован и сценарий замены не загружен. Я не понимаю, почему механизм отказоустойчивости, который я установил, не работает.

Вы знаете, почему это может случиться?

+0

Когда страницы не загружаются, просмотрели ли вы исходный код пути, с которым он пытается загрузить и посмотреть, можете ли вы напрямую просмотреть этот путь? – Matthew

+0

Да, источником был путь CDN. Я поместил этот источник непосредственно в браузер, и скрипт не загрузился. Я получил сообщение об ошибке: net :: ERR_CONNECTION_CLOSED. В этом случае не должен ли механизм отката включить сам и загрузить сценарий из локального проекта? – Code4Fun

+0

Какой код вы используете для проверки при отказе? Прочитали ли вы http://www.asp.net/mvc/overview/performance/bundling-and-minification – Matthew

ответ

0

Код, используемый вами, не является кодом с ошибкой. Если вы посмотрите на the docs for this это явно указано, что если вы просто запустите

bundles.Add(new ScriptBundle("~/bundles/jqueryValidate", "//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js").Include("~/Scripts/jquery.validate.min.js")); 

КДС будет загружен в производстве и Include путь будет загружен в отладке. Затем они заявляют

JQuery будет запрошены из CDN в режиме выпуска и версии отладочных JQuery будет выполняться локально в режиме отладки. Когда с использованием CDN, вы должны иметь резервный механизм в случае сбоя запроса CDN . Следующий фрагмент разметки с конца файла макета показывает скрипт, добавленный для запроса jQuery, если CDN завершится с ошибкой.

И они даже дать вам пример кода

<script type="text/javascript"> 
     if (typeof jQuery == 'undefined') { 
      var e = document.createElement('script'); 
      e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")'; 
      e.type = 'text/javascript'; 
      document.getElementsByTagName("head")[0].appendChild(e); 

     } 
    </script> 

в качестве проверки, чтобы убедиться, что КНС загружен и если не при сбое.

Если вы используете MVC на .Net 4.5, посмотрите на вызов CdnFallbackExpression, чтобы он автоматически генерировал, проверял и отключал вас.

Вы также можете найти this blog from Scott Hanselman полезной.

 Смежные вопросы

  • Нет связанных вопросов^_^