Любой опыт объединения 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
Я использую этот подход (на самом деле, я думаю, что то, что есть у телерика).
Работает как шарм.