2016-03-01 2 views
1

У меня есть проект MVC, который действительно просто служит для приложения angular. Это будет публичное приложение, и я ожидаю, что он получит много трафика, поэтому я пытаюсь использовать CDN, чтобы отслеживать запросы на мои серверы.Как я могу использовать CDN с моим приложением AngularJS на ASP.NET MVC?

Я нашел много статей о том, как получить angular себя от CDN, но то, что я ищу для МОЕГО файла (css, html, js, media), чтобы получить служили с CDN. Так, например, если у меня есть directive, тогда шаблон нужно будет обслуживать от CDN, но я не могу его жестко закодировать, потому что шаблон, возможно, еще не был загружен в тестовую или рабочую среду.

Обновление: Приложение MVC обслуживает только исходные макеты и домашние страницы. Как только мой угловой скрипт загружается, MVC больше не используется. Внутренний интерфейс представляет собой отдельное приложение веб-API.

ответ

1

Возможно, вы задаете неправильный вопрос, но вы на правильном пути для оптимизации трафика.

Во-первых, узнайте, как подавать угловое приложение в виде статических файлов. В прошлом проекте, над которым я работал, у меня было два проекта в моем визуальном студийном решении, один из которых был веб-интерфейсом Web API, а другой - веб-проектом, который просто служил статическому контенту. Вы можете настроить Visual Studio для одновременного запуска обоих проектов на разных портах с localhost. Это не отвечает на ваш вопрос, но настройка этого разработчика поможет вам приблизиться.

После того, как вы узнаете, что внешний интерфейс вашего проекта и его конечный сервер отделены от уровня сервера, убедитесь, что вы не собираетесь получать проблемы CORS из междоменных запросов. Если вы собираетесь обслуживать ваш сервер из субдомена, проблема с CORS может быть проблемой. Посмотрите на это, вам, вероятно, потребуется добавить код в ваше приложение MVC для решения этой проблемы.

Теперь, когда у вас есть все, что выяснилось, узнайте, как использовать службу CDN. Существует множество предложений с особенностями развертывания контента и сертификатов SSL для каждого из них. Amazon Web Services, Microsoft Azure и многие другие предлагают услуги CDN, но прежде чем вы даже посмотрите на этот материал, убедитесь, что вы действительно можете обслуживать ваш сервер из другого порта на своей машине dev, и он все еще работает.

+0

Да, я забыл сделать это явным, но мое приложение разделено точно так же, как вы уже описали. Единственное, что обслуживалось напрямую MVC, - это макет и главная страница, которые загружают только скрипты. Но каждый другой файл является только статическим файлом. А серверный интерфейс - это служба веб-API, размещенная в отдельном приложении, CORS больше не является проблемой. – IWriteApps

+0

В этом случае выберите CDN и повторите свой вопрос, если их документация вам не поможет. Процедуры для каждого CDN немного отличаются. Вам также может потребоваться статический хостинг, такой как azure blob-хранилище Amazon S3 без стоимости CDN перед ним. Он по-прежнему выгружает соединение с вашего сервера без неприятностей или управления кэшированными файлами на CDN. – nbering

0

Я пытался придумать хорошее решение для этого недавно ... В локальном тестировании (grunt serve) я использую текущий файл с минимальным размером .js/.css, но при создании сборки (сборка grunt), Id хочет указать эти файлы в CDN в моем проекте Angular. Я думаю, что для вашего хрюка (gulp/webpack/etc) build (который создает мини-локальные файлы для сборки), вы могли бы сделать задачу для добавления определенных URL-адресов в ваш CDN через https://github.com/callumlocke/grunt-cdnify или https://github.com/tactivos/grunt-cdn (но это по-прежнему будут использовать ваши неминифицированные файлы для подачи grunt).

Было бы здорово, если бы загрузка на CDN и недействительность файлов была плагином grunt/gulp/webpack. Тогда вы могли бы автоматизировать его как часть ваших сборщиков prod. Угадайте свою систему сборки, например, Jenkins/etc, загрузите приложение в любое место. , а затем либо с помощью плагина grunt/gulp, как это могло бы аннулировать ваши файлы: https://github.com/keycdn/grunt-keycdn, если вы используете эту службу CDN. Я предполагаю, что ваша система сборки, например, Jenkins, может также сделать эту работу для вас через свои собственные CDN загрузки/недействительные плагины.

Я знаю, что этот ответ упоминает хрюкать конкретно, но также должны быть похожие плагины для gulp/webpack/etc.