28 дек. 2009 г.

Django compressor и фильтры.

В прошлом посте я писал о django compressor. Не ясно было почему компрессор ничего не делает (по умолчанию) с CSS-файлами (кроме очевидного – сборки в один файл и кеширования).

Присмотревшись внимательней компрессору, удалось выяснить, что есть в нем возможность использования csstidy, jsmin, yuicompressor и google closure для сжатия css и js файлов. Однако, процесс установки и настройки этих инструментов, не так уж и прост (по крайней мере yuicompressor и google closure).

jsmin ставить отдельно не нужно. Он входит в “стандартный набор” и даже включен по умолчанию в настройках django compressor опцией


COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']


С csstidy у меня ничего не вышло. После установки csstidy на наш с Дениской debian и подключения фильтра:


COMPRESS_CSS_FILTERS = ['compressor.filters.csstidy.CSSTidyFilter']


словил 500 ошибку - фильтр не знал глобальную переменную css.


# django_compressor/compressor/filters/csstidy.py

...

17.         tmp_file.write(css)

...


YUI Compressor.

Сходил и забрал по ссылке http://yuilibrary.com/downloads/#yuicompressor.

Поставил openjdk-6-jre (советуют ставить последний, aptitude search "?provides(java-runtime)").


apt-get install openjdk-6-jre


Положил файл yuicompressor'а в /var/www/. Не спрашивайте зачем и почему – так в голову взбрело.

Добавил в settings.py моего django-проекта:


COMPRESS_JS_FILTERS = ['compressor.filters.yui.YUIJSFilter',]

COMPRESS_CSS_FILTERS = ['compressor.filters.yui.YUICSSFilter',]

COMPRESS_YUI_BINARY = 'java -jar /var/www/yuicompressor-2.4.2.jar'


Google closure пока не осилил. При, казалось бы правильных настройках:


COMPRESS_JS_FILTERS = ['compressor.filters.closure.ClosureCompilerFilter',]

COMPRESS_CSS_FILTERS = ['compressor.filters.closure.ClosureCompilerFilter',]

COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar /var/www/compiler.jar'


Попытка сжать css и js отпадает по таймауту. Возможно Вам известна причина? Напишите, я хочу сравнить производительность и результаты работы фильтров.

Возможно, кстати, кому-то удалось заставить работать csstidy?

4 комментария:

Ivan Markeev комментирует...

Вообще, я разочарован Django compressor'ом. На почте опять 20 писем о том, что он не смог получить нужное кол-во памяти при обработке css/js файлов, притом, файл НЕ МЕНЯЛИСЬ уже 4 дня.

Анонимный комментирует...

кстати можно было бы и оставить тикет на code.google.com.
denz.kiev.ua

Ivan Markeev комментирует...

Вы правы, но я не стал.

plutov.by комментирует...

Спасибо. Я тоже на своих сайтах YUI использую