Предлагаемая стратегия и библиотека для объединения с облачной интеграцией

Я оптимизирую свой веб-сайт ASP.net MVC 4. В настоящее время я использую связывание во время выполнения, чтобы комбинировать и минимизировать содержимое JavaScript и CSS. Я хотел бы автоматизировать публикацию уменьшенного контента в CDN (в частности, Amazon Cloudfront) по мере его создания.

Я пытаюсь определить наилучшую стратегию интеграции связанных файлов с CDN. Мои конкретные вопросы:

  • Существуют ли какие-либо доступные библиотеки, которые позволили бы сохранять связанные файлы в CDN, а не на моем локальном веб-сервере?
  • Должны ли статические файлы извлекаться из CDN перед объединением или они должны извлекаться с локального веб-сервера перед объединением?
  • Существуют ли какие-либо механизмы для включения контроля записи CDN только из моей веб-фермы (а не из общего доступа)?

person JP.    schedule 04.09.2012    source источник


Ответы (2)


Я лично не покупаюсь на «ИСПОЛЬЗУЙТЕ CDN ДЛЯ ВСЕХ СТАТИЧЕСКИХ !!» менталитет, поэтому я отказываюсь беспокоиться о копировании локальных скриптов в CDN, как вы описали. Конечно, на большие библиотеки можно ссылаться из существующих крупных CDN (Yahoo, Microsoft, Google), но для локальных скриптов это действительно не стоит хлопот, IMO.

Следуя этому ходу мыслей, я очень полюбил SquishIt. Нет необходимости использовать дополнительную конфигурацию XML или предварительную инициализацию. Просто включите его в мастер-файл или файл макета следующим образом:

<%= Bundle.Css()
        .Add("~/Content/Reset.less")
        .Add("~/Content/Site.less")
        .Add("~/Scripts/rcarousel/widget/css/rcarousel.css")
        .Add("~/Scripts/jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.css")
        .Add("~/Content/Fonts/Karla/stylesheet.css")
        .Render("~/Cache/Bundle.css") %>

<%= Bundle.JavaScript()
        .Add("~/Scripts/jquery-1.7.2.js")
        .Add("~/Scripts/jquery-ui-1.8.19.js")
        .Add("~/Scripts/modernizr-2.5.3.js")
        .Add("~/Scripts/rcarousel/widget/lib/jquery.ui.rcarousel.js")
        .Add("~/Scripts/jquery.fancybox-1.3.4/fancybox/jquery.fancybox-1.3.4.js")
        .Add("~/Scripts/jquery.youtubelite.js")
        .Render("~/Cache/Bundle.js") %>

Сказав это и многое другое по вашему мнению:

1) Мне неизвестны какие-либо библиотеки комплектов, поддерживающие автоматическое развертывание CDN. Обычный ход мыслей здесь состоит в том, чтобы CDN извлекал из каталога вашего веб-сайта и кэшировал его. Таким образом, развертывание осуществляется с помощью механизма вытягивания, а не проталкивания. В этой статье описывается как настроить получение источника с помощью CloudFront с сайтом wordpress. Я уверен, что конфигурация аналогична для ASP.NET.

2) Связка из локальных копий. Вы, вероятно, уже ссылаетесь на локальные копии в разработке, так зачем добавлять CDN в микс перед запуском?

3) Большинство облачных систем хранения (Amazon S3, Azure Storage, Rackspace Cloud Files) предлагают способ публикации файлов в облаке, которые остаются общедоступными только для чтения. Это зависит от API, поэтому метод зависит от вашего поставщика облачного хранилища.

person Chris    schedule 04.09.2012

После дополнительных исследований я наткнулся на библиотеку Squishit.S3, которая делает именно то, что мне нужно. По сути, он использует сквишит, позволяя копировать связанные файлы в корзину S3/Cloudfront во время выполнения. Конфигурация очень проста, и поскольку она использует API-интерфейсы Amazon, учетные данные используются для записи в CDN. Если вы уже используете Squishit, достаточно добавить пару строк конфигурации по умолчанию в файл global.asax, а все остальное позаботится за вас.

person JP.    schedule 07.09.2012