Django,服务组合静态文件behine nginx与apache代理?

时间:2010-12-17 16:16:24

标签: django apache proxy nginx

我一直在研究组合静态文件并将它们作为一个文件提供。但是当我的django堆栈在带有nginx loadbalancer的apache代理上时,我该怎么做?

问候 Bjarni I。

2 个答案:

答案 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}}部分。