我一直在研究组合静态文件并将它们作为一个文件提供。但是当我的django堆栈在带有nginx loadbalancer的apache代理上时,我该怎么做?
问候 Bjarni I。
答案 0 :(得分:0)
您可能希望查看nginx的try_files指令。在您的Django代码中编写一个视图,它将压缩文件并将它们放到您的nginx服务器上(或者它可以访问的其他内容,如NFS共享),然后在它拥有的版本之前拥有nginx try_files
,之后如果文件还不存在,则回退到你的Django文件cruncher(此时nginx会为它提供服务)。
答案 1 :(得分:0)
您可以尝试django-compress。在您的设置模块中,您可以定义静态文件组(js,css),压缩将按每个组压缩为一个文件。然后有几个模板标签用于在模板中包含压缩文件。
例如
#settings.py
COMPRESS_CSS = {
'main': {
'source_filenames': ('css/960gs.css',
'css/main.css',
),
'output_filename': 'css/main.min.r?.css',
'extra_context': {
'media': 'screen,projection',
},
},
# other CSS groups goes here
}
然后,在模板中的某个位置(很可能是您的基本模板),您使用{% compressed_css 'main' %}
。
如果您希望在所有页面中包含某些css / js,则可以定义多个组,但有些只想包含在某些页面中,或者您需要的任何页面中。它非常灵活。
您还可以轻松关闭压缩以便于调试。
它还为生成的压缩文件添加了唯一的版本号,以解决浏览器缓存问题。这是r?
的{{1}}部分。