【问题标题】:Why serving static file with django or other web framework is discouraged in production?为什么不鼓励在生产中使用 django 或其他 Web 框架提供静态文件?
【发布时间】:2015-03-29 16:38:10
【问题描述】:

出于性能原因,通常使用 NGINX 提供静态文件,而不是基于 Python(或 PHP)的 Web 应用程序。

有些人认为 NGINX 是用 C 编写的,而您的 Web 应用程序是用动态语言编写的,这样比较慢。但我认为对于面向 IO 的任务,C 的性能并没有明显优于 Python 或 PHP。

为什么使用 django 或其他 web 框架提供静态文件的性能较低?

【问题讨论】:

  • 你的应用是否有所有的 nginx 的 tcp_nodelay/sendfile/aio/etc。选项?它们极大地加快了静态文件的服务速度,还减少了 CPU 和内存的使用。你的应用可能会做一些简单而低效的事情,比如读取文件和发送响应。
  • 问题解决了吗?
  • @Anatoly 不是。

标签: performance nginx io webserver


【解决方案1】:

Nginx 基本上是反向代理。后端通过代理,直接从文件系统提供的静态文件绕过任何后端处理。

为什么不通过后端提供静态服务?这个问题很明显,性能和释放繁重的后端进程。 Nginx 可以轻松地为数千个异步连接(20-50mb)提供服务,甚至与多线程的数百个后端进程相比,这对于主要用于动态请求是有意义的。

磁盘系统 I/O 便宜,后端昂贵。

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 1970-01-01
    • 2018-09-25
    • 2019-12-19
    • 2011-11-14
    • 2017-12-30
    • 1970-01-01
    • 2011-08-11
    • 2017-10-27
    相关资源
    最近更新 更多