Как стать автором
Обновить

Комментарии 11

Сделал немного по другому.

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 на продакшне без приостановки сайта.
Я php занимаюсь совсем недавно. Была такая задачка, придумал простенькое решение…
Спасибо за готовое решение. А то приходилось все вручную делать. Если изменить данные в стиле заново запаковать в архив. Попробую применить.
Нашел сам у себя маленькую ошибку. При минимизации и последующем сжатии происходит перезапись файла (пропадает результат минимизации). Надо будет поправить…
Исправил.
Прикрутил к своему проекту. Вроде все отлично работает.
Похожее решение: 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.
А можете готовый пример выложить, т.е файлы для скачки, буду очень благодарен
Выложить готовый пример вряд ли получится, по причине, что это не подключаемый модуль, а скорее из разряда «сделай сам». Нужно не только вносить локальные изменения в код, но и менять ссылки на js и css файлы, изменять htaccess. Без этого ничего работать не будет.
Хм, просто код у меня так и не получилось запустить на сайте, сжатые копии не создаются. при внесении изменений в htaccess получаю ошибку 500, так то
Ну что сразу приходит в голову…
Отключен mod_rewrite, проблема переадресации (конфликт с другими правилами), права доступа…
Неплохо бы почитать логи, там должна быть написана причина.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории