我在一块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" />
Run Code Online (Sandbox Code Playgroud)
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'
]
Run Code Online (Sandbox Code Playgroud) 此问题专门针对使用Django Compressor的生产站点.我想在COMPRESS_OFFLINE = True时使用它,这样我就可以在推送到生产之前预压缩我所有网站的css文件.
我想在base.html中做相同的事情:
{% compress %}
{% block css %}
{% endblock %}
{% endcompress %}
Run Code Online (Sandbox Code Playgroud)
以便扩展base的文件中的所有css块都被压缩.这主要是因为我不必将{%compress%}标签添加到我的所有子模板中.
Stack Overflow上有几个类似的问题,但是在离线压缩时(例如使用Django Compressor的压缩管理命令),我没有找到一个很好的解决方案.当COMPRESS_OFFLINE = False时,周围的压缩标签工作正常.有人找到了让这项工作脱机的方法吗?
我列出了一些似乎与非离线解决方案有关的类似线程.第二个线程中的链接表明在离线使用Django Compressor时存在过去的继承问题,但可能已经解决了: