2012-06-20 1 views
9

Я экспериментировал с Django Compressor в разработке на блоке css-файлов. Я сначала помещал {% compress%} теги вокруг одного файла, генерируя f6527e81a37c.css. Затем я включил еще два css-файла между тегами, но вместо одного миниатюрного файла это привело к получению 2-х мини-файлов: f6527e81a37c.css и ee906624f953.css.Django Compressor Not Regenerating Compressed CSS

В конце концов, я хотел конкатрировать и сжать весь этот блок css в один минитипированный файл, но перемещение большего количества файлов в теги сжатия, похоже, не восстанавливает ключи, связанные с файлами css, то есть все еще сжимает в несколько файлов css, даже если они завернуты в тот же блок {% compress%}.

Я попытался очистить memcache Django, удалив каталог/static/CACHE /, который создает Compressor, и используя команду управления сжатием, которая поставляется с Django Compressor, но я все еще получаю несколько сжатых css-файлов при запуске dev Окружающая среда. Есть ли какие-то обновления, которые я могу сделать, чтобы Django Compressor восстанавливал ключи css, связанные с файлами в блоке {% compress%}? Компрессор должен хранить где-то предыдущие сжатые ключи файлов.

Результаты сжатия:

<link rel="stylesheet" href="/static/CACHE/css/f6527e81a37c.css" type="text/css" media="screen, projection" /> 
<link rel="stylesheet" href="/static/CACHE/css/ee906624f953.css" type="text/css" /> 
<link rel="stylesheet" href="/static/CACHE/css/7147db857125.css" type="text/css" media="screen, projection" /> 
<link rel="stylesheet" href="/static/CACHE/css/043e7d82b775.css" type="text/css" /> 

settings.py:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    #other 
    'compressor.finders.CompressorFinder', 
) 
COMPRESS_ENABLED = True 
COMPRESS_OFFLINE = True 
COMPRESS_CSS_FILTERS = [ 
    #creates absolute urls from relative ones 
    'compressor.filters.css_default.CssAbsoluteFilter', 
    #css minimizer 
    'compressor.filters.cssmin.CSSMinFilter' 
] 
COMPRESS_JS_FILTERS = [ 
    'compressor.filters.jsmin.JSMinFilter' 
] 

ответ

4

Я нашел ответ:

Джанго Компрессор разрывалось файлы CSS вокруг тех, которые содержат медиа = «экран, проекция» в их свойствах и те, которые этого не делают.

Благодарим за отзыв.

1

Вот как работает Django компрессора. Каждый раз, когда происходит изменение, создается и используется новый css-файл. Старый не удаляется.

Просто удалите все ваши файлы css в каталоге CACHE и перезагрузите страницу. После этого будет только один.

7

Установить то же самое media свойство для всех объявлений CSS поможет.

В результате получается что-то вроде:

<link rel="stylesheet" href="/static/CACHE/css/f6527e81a37c.css" type="text/css" media="all" />