Gulp CSS minify & gzip + django-compressor не работает

Я пытаюсь минимизировать и сжать свой css (а позже и js) и обслуживать его. С этой целью я сначала минимизирую и сжимаю его с помощью gulp, а затем обслуживаю сжатые файлы с помощью django-compressor (так что будет сделан только HTTP-запрос).

Я почти следовал этому руководству: http://www.revsys.com/blog/2014/oct/21/ultimate-front-end-development-setup/

Использование напрямую gzip-файлов работает хорошо, однако, когда я пытаюсь сгруппировать их с помощью django-compressor, я получаю следующую ошибку:

UncompressableFileError at /
UnicodeDecodeError while processing '..../static/mincss/filename.min.css.gz' 
with charset utf-8-sig: 'utf8' codec 
can't decode byte 0x8b in position 1: invalid start byte

Что соответствует тегу сжатия:

    {% compress css %}
      <link rel="stylesheet" href="{{ STATIC_URL }}mincss/filename.min.css.gz">
...more files
    {% endcompress %}

Я на 99% уверен, что файлы, сгенерированные gzip, верны. Это us-ascii (подмножество utf-8) и они содержат файл *.min.css.

Мои соответствующие настройки (о которых я знаю) для этой проблемы такие же, как те, которые перечислены в руководстве. Единственная разница в том, что в руководстве он включает файлы css следующим образом:

{% compress css %}
<link rel="stylesheet" href="{% static "stylesheets/main.css" %}" />
<link rel="stylesheet" href="{% static "stylesheets/some-other.css" %}" />
{% endcompress %}

Но этот способ (хотя он и работает) не использует сжатые файлы, даже минимизированные. Что мне не хватает?


person Pol Alvarez Vecino    schedule 13.07.2015    source источник
comment
У вас в настройках тоже стоит COMPRESS_ENABLED=True? Это легко пропустить. Мне кажется, что django-compressor думает, что вы передаете ему необработанный файл CSS, а не уже сжатый и минифицированный GZIP, но это всего лишь предположение.   -  person FlipperPA    schedule 14.07.2015
comment
Да к сожалению уже прохожу.   -  person Pol Alvarez Vecino    schedule 14.07.2015


Ответы (1)


Включаемый файл не должен содержать расширение gzip. Просто указав имя файла (*.css), компрессор автоматически проверит и загрузит сжатую версию файла (должно иметь такое же имя плюс .gz).

Имейте в виду, что он будет загружать сжатые файлы только в рабочей среде (с параметром debug=false и включенным автономным сжатием).

person Pol Alvarez Vecino    schedule 18.07.2015