| Профиль | Блог (2) | Комментарии (1) | Закладки | Продукты |
Cogear изначально умеет склеивать js и css файлы в один и кешировать результат, но при этом не выполняет их сжатие, что приводит к необходимости каждому посетителю скачивать довольно тяжелые файлы со скриптами и стилями.
Сначала нужно скачать jsmin.php и cssmin.php и положить их в /gears/global/library. Взять их можно с их официальных сайтов: jsmin и cssmin.
После этого следует немного изменить assets.class.php в том же каталоге. Найти там строки (172 в нынешнем trunk).
и заменить их на следующие
Можно вывод jsmin и cssmin сразу жать gzip-ом и сохранять уже сжатые файлы с .nogzip-копиями (так советует webo.in) или же жать на лету с помощью mod_deflate, хотя это и несколько грузит сервер. Для этого в /uploads/assets/.htaccess добавим пару строчек.
Тут не используется AddOutputFilterByType потому, что все файлы в assets следует сжимать gzip-ом.
js/inline в gears тоже стоит сжимать gzip-ом, для этого в /gears/.htaccess добавим
После этого следует немного изменить assets.class.php в том же каталоге. Найти там строки (172 в нынешнем trunk).
$output = $this->prepare($output);
file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type,$output);
и заменить их на следующие
$output = $this->prepare($output);
switch($group) {
case 'scripts':
file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type,JSMin::minify($output));
break;
case 'styles':
file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type,cssmin::minify($output));
break;
default:
file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type,$output);
break;
}
Можно вывод jsmin и cssmin сразу жать gzip-ом и сохранять уже сжатые файлы с .nogzip-копиями (так советует webo.in) или же жать на лету с помощью mod_deflate, хотя это и несколько грузит сервер. Для этого в /uploads/assets/.htaccess добавим пару строчек.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
Header append Vary User-Agent env=!dont-vary
</IfModule>
Тут не используется AddOutputFilterByType потому, что все файлы в assets следует сжимать gzip-ом.
js/inline в gears тоже стоит сжимать gzip-ом, для этого в /gears/.htaccess добавим
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript application/x-javascript text/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
Header append Vary User-Agent env=!dont-vary
</IfModule> 

Обычно сейчас на всех современных хостингах включен gzip на лету через nginx.
$output = $this->prepare($output); file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type,$output);добавить такое:$gzdata = gzencode($output, 5); file_put_contents($this->dir.$this->global_template.'_'.$group.'.'.$type.'.gz',$gzdata);Естественно в nginx включить gzip_static on;