【发布时间】:2016-08-09 21:17:59
【问题描述】:
我遇到了settings.py 的以下示例:
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并被告知:
static() 辅助函数适用于开发,但不适用于 生产使用。永远不要使用 Django 提供静态文件 生产环境。
谁能解释一下为什么以及如何更好地使用它?
编辑:
我可以在 Apache 中使用 static() 吗?
【问题讨论】:
-
查看这些提示here
-
@nbryans 提示很有趣,但我一般看不到我的问题的答案。它还只是告诉不要将静态文件与“manage.py runserver”一起使用。我想了解为什么我不应该将它与 Apache 一起使用?
-
如果你想从你的 WSGI 服务器提供静态文件,WhiteNoise 是一个更好的选择。如果设置允许,WhiteNoise 将使用网络服务器使用
sendfile()系统调用直接从磁盘推送实际文件内容。static()帮助程序将文件加载到 python 内存中并通过 WSGI 处理程序发送。应尽可能避免使用这些额外的层,尤其是对于较大的文件。 -
您最好还是使用专门构建的 Web 服务器的设施而不是 WhiteNoise。所以如果使用 Apache/mod_wsgi 使用 Apache 来处理静态文件而不是 WhiteNoise。如果在 nginx 后面使用 uWSGI 或 Gunicorn,请使用 nginx。您可能仍想使用 WhiteNoise 的一个原因是,如果与 CDN 结合使用来缓存内容。
标签: python django apache static settings