为啥建议使用不同的服务来托管 django 的静态文件(如 nginx 或 apache)?
Posted
技术标签:
【中文标题】为啥建议使用不同的服务来托管 django 的静态文件(如 nginx 或 apache)?【英文标题】:Why is it suggested to use a different service to host static files (like nginx or apache) for django?为什么建议使用不同的服务来托管 django 的静态文件(如 nginx 或 apache)? 【发布时间】:2020-11-14 12:16:35 【问题描述】:我在 *** 上看到了很多关于在部署期间在 django 中处理静态文件的问题。我看到很多答案都是这样说的——“关闭调试后,Django 将不再为你处理静态文件——你的生产网络服务器(Apache 或其他东西)应该会处理这个问题。” 为什么我们不能使用托管 django 项目的服务器来托管静态文件呢?
【问题讨论】:
【参考方案1】:静态文件不需要任何类型的逻辑或处理。通过 Web 服务器直接从磁盘将它们直接交付给最终用户比通过 Django 的中间层运行它们更有效。该中间层(例如 gunicorn、uwsgi 或 mod_wsgi)是允许处理视图之类的东西并允许 ORM 与数据库连接的东西。由于静态文件不需要这些,因此绕过它是最有效的。最终用户上传的媒体文件也是如此。祝你好运!
【讨论】:
以上是关于为啥建议使用不同的服务来托管 django 的静态文件(如 nginx 或 apache)?的主要内容,如果未能解决你的问题,请参考以下文章
Django本地调试时模拟服务器使用url方式访问静态文件(不建议使用)
为啥我的静态文件在部署到 Heroku 服务器时没有提供? (姜戈)