Давненько заглядывался на django-compress, но всякий раз пугался групп для css и js файлов. Дело в том, что процессе непрекращающегося deadline’а я постоянно дописываю стили в новые файлы или прям в шаблоны. Вечно потом пытаюсь разобраться в этом беспорядке, но как правило, прихожу к выводу, что некоторым стилям, или “приглашенным” js-скриптам в общем наборе делать нечего.
Пример: на сайте http://72arenda.ru/ есть форма заказа. Сейчас jquery + ui грузятся для всего сайта, но раньше было правильней – набор грузился только на странице бронирования, где эти скрипты и были востребованы. Подобных примеров в моих проектах много.
Альтернатива django-compress’у - Django compressor, использует другой подход. После подключения приложения ‘compressor’ в INSTALLED_APPS нужно прям в шаблонах заворачивать конструкции вызова или описания css или js файлов в специальные templatetag’и.
Пример с сайта:
{% load compress %}
{% compress css %}
<link rel="stylesheet" href="/media/css/one.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
<link rel="stylesheet" href="/media/css/two.css" type="text/css" charset="utf-8">
{% endcompress %}
{% compress js %}
<script src="/media/js/one.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">obj.value = "value";</script>
{% endcompress %}
Django compressor заменит стили на
<link rel="stylesheet" href="/media/CACHE/css/f7c661b7a124.css" type="text/css" media="all" charset="utf-8">
а js на
<script type="text/javascript" src="/media/CACHE/js/3f33b9146e12.js" charset="utf-8"></script>
То есть, на кешированные, собранные в один файл, почищенные наборы стилей и скриптов.
UPD. Как выяснилось поздней, фильтры по умолчанию ничего не делают с содержимым файлов - не жмут, не чистят, не обфусцируют. Для активации фильтров нужно ставить yui-compressor или google closure, т.к. csstidy у меня работать отказался – жалуется, что не знает переменную css.
Compressor не делает ничего, если включен дебаг режим (DEBUG = True).
Компрессору нужен BeautifulSoup, так что проследите, чтоб он у вас был установлен.
К сожалению, пока не удалось разобраться в том, что является критерием “перестройки” кеш-файлов. В скриптах есть строка “Rebuilds the cache once a day if nothing has changed.” – Очевидно, перестройка происходит чаше, если что-то меняется (я проверял. каждый раз, когда я что-то менял, происходила “перестройка”).
Подобные инструменты нужно использовать в паре с методикам и описанными на странице http://code.google.com/p/django-compress/wiki/FarFutureExpires для достижения большего эффекта.
Успехов в освоении Django compressor и с наступающим!
4 комментария:
Compressor не делает ничего, если включен дебаг режим (DEBUG = True).
если стоит настройка COMPRESS_ENABLED=True то делает в любом случае.
Наверняка что-нибудь изменилось с 2009 года )))
Вполне возможно =) Наверное, будет кстути также сказать, что можно обойтись без бьютифулсоупа, поставив настройку COMPRESS_PARSER на что либо иное, например на, compressor.parser.LxmlParser
З.Ы. Защита слишком жесткая на комментарии :(
Да, ваша правда - защита слишком жестка, но на удаление рекламы тратится очень много времени. Прошу прощения, за неудобства.
Отправить комментарий