为啥静态文件在网络服务器中单独提供?

Posted

技术标签:

【中文标题】为啥静态文件在网络服务器中单独提供?【英文标题】:Why are static files served separately in webservers?为什么静态文件在网络服务器中单独提供? 【发布时间】:2014-11-24 04:23:03 【问题描述】:

似乎大多数 Web 服务器(Apache、nginx、Lighthttpd)与 html 文件分开提供静态文件(不同的配置)。这是为什么呢?

我正在尝试使用 Apache 部署我的 Django 应用程序,到目前为止的部署非常简单。在开发过程中,Django 服务器提供静态文件,而我无需费心对其进行配置。为什么在真实的网络服务器中会有所不同?

【问题讨论】:

【参考方案1】:

这是一个性能问题。

在生产设置中,您不希望通过 django 提供静态内容。通过 django 提供静态内容涉及大量开销(加载静态文件、处理 python 字节码、传递 WSGI 等),这对于静态内容是完全不必要的。

Web 服务器本身在提供静态内容方面非常快速和高效,因此通常没有理由在请求中涉及 django/python。

对于没有大量负载的小型网站,您可以让 django 提供静态内容(您需要将 django 配置为使用 DEBUG=False 提供静态内容),它相对无害,但不会是'正确的方法'。

【讨论】:

以上是关于为啥静态文件在网络服务器中单独提供?的主要内容,如果未能解决你的问题,请参考以下文章

“提供静态文件”到底是啥意思?

提供网络通信和网络资源共享功能的操作系统称为啥

为啥我的静态文件在部署到 Heroku 服务器时没有提供? (姜戈)

为啥我的节点静态文件服务器丢弃请求?

使用 socket.io 提供静态文件的问题

为啥在 Keras 中使用前馈神经网络进行单独的训练、验证和测试数据集可以获得 100% 的准确率?