Мы создали механизм, состоящий из следующих частей:
- minfication (для js и css)
- агрегирование в пакетах
- кэширование (http состояние 304 материала)
- отсылка исходных файлов для в режиме разработки
Это может быть слишком много для Ваших потребностей, но для ответа на вопрос, что делают другие вот то, как это работает:
- запрос А входит в, скажем,/css.aspx? package=core
- Мы делаем поиск packagename в файле настройки XML (который, например, объявляет, что пакет "ядро" содержит файлы/js/mootools.js и/js/swfobject.js)
- Мы проверяем, включена ли минификация. Например, в среде разработки мы не хотим, чтобы уменьшенное js содержание было роздано, но вместо этого пишем исходные файлы. Для js это сделано document.writes сценария, включает, и для css мы пишем правила импорта.
- , Если минификация требуется (в производственном ENV) мы делаем проверку на if-modified-since заголовке от запроса. Если у этого клиента уже есть уменьшенное содержание, мы отправляем http заголовок 304. Если клиент действительно требует содержания, мы проверяем, уменьшили ли мы содержание в кэше и подаче это. Иначе мы уменьшаем и отправляем результат.
Все это разбито в отдельных сервисах. Существует сервис кэша, введенный в jsminificationwriter сервисе. Это использует исходный minificationservice, который только заботится о правилах минификации.
то, Что хорошо в этом подходе:
- Это вынуждает наши группы разработчиков думать в js/css "пакетах" и поэтому правильно разделить функциональность и распределить их по страницам, которые требуют их.
- Во время разработки Вы отлично в состоянии отладить, получая надлежащие файлы и номера строки.
- можно поднять трубку любую другую реализацию услуги минификации, такую как YUI и т.д. JsMin был только нашим первым взятием.
- Это - общий подход, который работает на различные типы контента.
Hope это помогает. Я могу отправить некоторые фрагменты кода для иллюстрирования его больше, если Вам нравится.
задан Charles 17 February 2012 в 15:41
поделиться