Django压缩器不重新生成压缩的CSS

时间:2012-06-20 07:21:50

标签: css django minify django-compressor

我在一块css文件的开发中尝试使用Django Compressor。我首先将{%compress%}标签放在一个文件周围,生成f6527e81a37c.css。然后我在标签之间添加了两个css文件,但是没有一个缩小的文件,这导致了2个缩小的文件:f6527e81a37c.css和ee906624f953.css。

最后,我想将所有css块连接并压缩成一个缩小文件,但是将更多文件移动到压缩标签中似乎不会重新生成与css文件关联的密钥,即它仍然会压缩到多个css文件,即使它们包含在相同的{%compress%}块中。

我尝试清除Django的memcache,删除Compressor生成的/ static / CACHE /目录,并使用Django Compressor附带的压缩管理命令,但是当我运行dev环境时,我仍然得到多个压缩的css文件。我可以做一些刷新,以便Django Compressor重新生成与{%compress%}块中的文件相关联的css密钥吗? Compressor必须存储先前压缩文件密钥的位置。

压缩的结果:

<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'
]

3 个答案:

答案 0 :(得分:7)

将相同的media属性设置为所有CSS声明都会有所帮助。

结果如下:

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

答案 1 :(得分:4)

我找到了答案:

Django Compressor在他们的属性中包含media =“screen,projection”的那些文件以及那些不包含media =“screen,projection”的文件中打破了css文件。

感谢您的回复。

答案 2 :(得分:1)

这就是Django Compressor的工作原理。每次更改时都会生成并使用新的css文件。旧的不会被删除。

只需删除CACHE目录中的所有css文件,然后重新加载页面即可。之后只会有一个。