Комментарии 11
Сделал немного по другому.
1. Описываются пакеты, примерно так:
2. Создается контроллер, обрабатывающий запросы по адресу /pack/*
Для приведенного выше примера адреса следующие (создаются специальным хелпером):
/pack/jquery.bigpicture.v5.js
/pack/jquery.bigpicture.v5.css
Контроллер смотрит пакет, минимизирует и жмет файлы (кстати для этого удобней воспользоваться функцией gzencode)
, заодно пишет кеш (js и gz), обращение к которому будет по тому же адресу. Для css сжатие чуть посложнее, там нужно учитывать относительные адреса, но особой проблемы это не вызвало.
3. Rewrite в Apache настраивается почти по тому же прицнипу что в топике. Если файл есть, отдается (js или gz), если нет — срабатывает контроллер. Тут главное не забывать про нужные заголовки (как чтение, так и передачу)
PROFIT:
— Все легко настраивается в конфиге (степень сжатие, необходимость и алгоритм минимизации)
— Для девелоперсокго окружения стоит отдельный конфиг, который полностью отключает этот механизм, файлы отдаются по старинке. Очень полезно когда нужно отлаживать Javascript на продакшне без приостановки сайта.
1. Описываются пакеты, примерно так:
<?php return array( '.jquery' => array( 'js' => array( 'res/jquery/jquery-1.3.2.js', ), ), 'jquery.bigpicture' => array( 'include' => array( 'jquery', ), 'js' => array( 'res/jquery/bigpicture/jquery.bigPicture.js', ), 'css' => array( 'res/jquery/bigpicture/css/skin.css', 'res/jquery/bigpicture/css/core.css', ), 'version' => 5, ), );
2. Создается контроллер, обрабатывающий запросы по адресу /pack/*
Для приведенного выше примера адреса следующие (создаются специальным хелпером):
/pack/jquery.bigpicture.v5.js
/pack/jquery.bigpicture.v5.css
Контроллер смотрит пакет, минимизирует и жмет файлы (кстати для этого удобней воспользоваться функцией gzencode)
, заодно пишет кеш (js и gz), обращение к которому будет по тому же адресу. Для css сжатие чуть посложнее, там нужно учитывать относительные адреса, но особой проблемы это не вызвало.
3. Rewrite в Apache настраивается почти по тому же прицнипу что в топике. Если файл есть, отдается (js или gz), если нет — срабатывает контроллер. Тут главное не забывать про нужные заголовки (как чтение, так и передачу)
PROFIT:
— Все легко настраивается в конфиге (степень сжатие, необходимость и алгоритм минимизации)
— Для девелоперсокго окружения стоит отдельный конфиг, который полностью отключает этот механизм, файлы отдаются по старинке. Очень полезно когда нужно отлаживать Javascript на продакшне без приостановки сайта.
+2
Спасибо за готовое решение. А то приходилось все вручную делать. Если изменить данные в стиле заново запаковать в архив. Попробую применить.
0
Похожее решение: SmartOptimizer ( farhadi.ir/works/smartoptimizer )
Features
* SmartOptimizer increases your website download speed by reducing the size of Javascript and CSS files approximately up to 80% or even higher.
* SmartOptimizer reduces count of http requests by concatenating JS/CSS files together.
* It also reduces http requests by embedding CSS images and CSS imported files.
* If your website has a large amount of Javascript and CSS files, SmartOptimizer reduces your monthly bandwidth usage amazingly.
* SmartOptimizer generates minified, compressed, combined and embedded files on the first request and caches them on the server and uses the cache on future requests.
* It doesn't embed duplicated urls (i.e. css sprites) in css files for better performance.
* It also knows to regenerate already cached files if the originals have been changed.
* SmartOptimizer handles browsers that doesn't support gzip encoding and sends them non-gzipped content.
* It also forces the browser to cache the files optionally forever or until they have not changed.
* SmartOptimizer removes Etag headers. (for better performance on clustered servers).
* It is very easy to install and usually there is no need to do any changes on your codes.
Features
* SmartOptimizer increases your website download speed by reducing the size of Javascript and CSS files approximately up to 80% or even higher.
* SmartOptimizer reduces count of http requests by concatenating JS/CSS files together.
* It also reduces http requests by embedding CSS images and CSS imported files.
* If your website has a large amount of Javascript and CSS files, SmartOptimizer reduces your monthly bandwidth usage amazingly.
* SmartOptimizer generates minified, compressed, combined and embedded files on the first request and caches them on the server and uses the cache on future requests.
* It doesn't embed duplicated urls (i.e. css sprites) in css files for better performance.
* It also knows to regenerate already cached files if the originals have been changed.
* SmartOptimizer handles browsers that doesn't support gzip encoding and sends them non-gzipped content.
* It also forces the browser to cache the files optionally forever or until they have not changed.
* SmartOptimizer removes Etag headers. (for better performance on clustered servers).
* It is very easy to install and usually there is no need to do any changes on your codes.
0
А можете готовый пример выложить, т.е файлы для скачки, буду очень благодарен
0
Выложить готовый пример вряд ли получится, по причине, что это не подключаемый модуль, а скорее из разряда «сделай сам». Нужно не только вносить локальные изменения в код, но и менять ссылки на js и css файлы, изменять htaccess. Без этого ничего работать не будет.
0
Хм, просто код у меня так и не получилось запустить на сайте, сжатые копии не создаются. при внесении изменений в htaccess получаю ошибку 500, так то
0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Статическое сжатие css и js файлов (автоматизация процесса)