9

我在开发一块 css 文件时尝试使用 Django Compressor。我首先在一个文件周围放置 {% compress %} 标签,生成 f6527e81a37c.css。然后我在标签之间添加了两个 css 文件,但不是一个缩小文件,而是两个缩小文件:f6527e81a37c.css 和 ee906624f953.css。

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

我尝试清除 Django 的 memcache,删除 Compressor 生成的 /static/CACHE/ 目录,并使用 Django Compressor 附带的 compress 管理命令,但是当我运行开发环境时,我仍然得到多个压缩的 css 文件。是否可以进行某种刷新,以便 Django Compressor 重新生成与 {% compress %} 块中的文件关联的 css 键?压缩器必须将以前的压缩文件密钥存储在某处。

压缩结果:

<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" />

设置.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

2 回答 2

7

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

结果是这样的:

<link rel="stylesheet" href="/static/CACHE/css/f6527e81a37c.css" type="text/css" media="all" />
于 2012-07-17T08:33:58.380 回答
4

我找到了答案:

Django Compressor 将 css 文件分解为属性中包含 media="screen, projection" 和不包含的那些文件。

感谢您的回复。

于 2012-06-20T17:49:48.937 回答