Любой опыт объединения JS/CSS в MVC?

Я планирую реализовать решение для объединения нескольких файлов js/css в отдельные файлы в моем проекте MVC, но в настоящее время я сомневаюсь в следующих двух возможностях:

Расширения Telerik для ASP.NET MVC (Www.telerik.com/products/aspnet-mvc.aspx)

  • Поддержка объединения нескольких файлов в один запрос
  • Поддержка групп веб-ресурсов
  • Поддержка групп кеширования
  • Кэширование отключено, когда приложение находится в режиме отладки
  • Группы активов должны быть определены в главной странице или (частичном) представлении
  • Поддержка сжатия GZip
  • Поддержка CDN
  • Больше, чем только сжатие/объединение (например, помощники JQuery)

Combres - Библиотека ресурсов ресурсов WebForm и MVC на стороне клиента (Combres.codeplex.com)

  • Поддержка объединения нескольких файлов в один запрос
  • Поддержка минимизации ресурсов
  • Поддержка групп веб-ресурсов
  • Поддержка кеширования групп
  • Поддерживает версии групп (делает недействительными кеш браузера и кеш сервера)
  • Поддерживает debugmode (отключает кеширование/минимизацию)
  • Группы активов должны быть определены в разделе веб-конфигурации
  • Поддержка сжатия GZip
  • Пользовательский маршрут должен быть добавлен
  • Поддержка настраиваемых фильтров
  • Использует библиотеку компрессора YUI

Есть ли у кого-нибудь опыт в одном из этих или, возможно, другом комбинирующем решении? Меня особенно интересуют оценки YSlow (до и после) и/или статистика/показатели сжатия.

Ответ 1

Планируете ли вы использовать расширения Telerik MVC, когда они станут доступными? Если да, то их комбайнер script кажется естественным выбором, так как их виджеты интегрируются с ним...

Если вы собираетесь использовать ресурсы script и css из нескольких источников, то как насчет хорошей старомодной сборки script в вашей строительной среде по выбору?

  • Обычно легко настроить инструмент сборки для слияния текстовых файлов и запуска внешних компрессоров.
  • Использование инструмента построения является естественным приложением для непрерывной интеграции и одноэтапного развертывания.
  • И вы можете легко сделать статический файл, обслуживающий отдельный домен без файлов cookie для максимальной скорости загрузки и минимальных издержек сервера.
  • И это облегчит добавление CDN позже, если это необходимо. (Решение AFAIK Teleriks может ссылаться на файл, уже доступный на CDN, но не может минимизировать локальный файл и загружать его в CDN.)

Меня особенно интересуют оценки YSlow (до и после) и/или статистика/показатели сжатия.

Не беспокойтесь слишком много за несколько процентных различий в достигнутом сжатии или один HTTP-заголовок, который строго не нужен. Если вы просто объедините файлы, где это возможно, уменьшите пробел, включите HTTP-сжатие и установите правильные заголовки кеширования; то вы намного опережаете средний веб-сайт...

Если вы предпочитаете сохранять миниатюру внутри MVC,, то это сводится к зрелости библиотеки IMHO. Я не знаю, какой из них должен быть лучшим выбором прямо сейчас. Но взгляните на IncludeCombiner; это часть MVCContrib сейчас, и, как таковая, в будущем будет иметь большое значение.

Ответ 2

Вы можете использовать MvcContrib.IncludeHandling. Поддержка:

  • Объединение нескольких файлов в один запрос
  • Сочетание CSS
  • Объединение JS
  • Режим отладки через MvcContrib.Filters.DebugFilter
  • Кэш-заголовки
  • сжатие GZip/Deflate
  • Конфигурация
  • Переключение реализаций по умолчанию частей, на которые он опирается, с вашими собственными реализациями (например, свопите кэш с вашей собственной реализацией)
  • Регистрация включений в представлениях, а также мастеров - игнорирует повторяющиеся регистрации.

Все происходит во время выполнения; не требуется никаких этапов строительства и т.д. Не требуется настраиваемый маршрут. Использует YUICompressor.

Ответ 3

Я использую этот подход (на самом деле, я думаю, что то, что есть у телерика). Работает как шарм.