项目

通用

个人资料

操作

服务器流响应体详情

流式响应的配置选项允许管理员配置是否在向客户端发送数据之前完整收集响应。

选项 描述
server.stream-response-body = 0 默认:在发送给客户端之前缓冲整个响应体
server.stream-response-body = 1 将响应体流式传输到客户端;缓冲到临时文件
server.stream-response-body = 2 将响应体流式传输到客户端;极少量缓冲可能会阻塞后端

Lighttpd 通常比客户端快,也通常比后端快。

server.stream-response-body = 1
流式传输大型响应的用户很可能希望设置 server.stream-response-body = 1,这样 lighttpd 就可以尽可能快地(通过临时文件)缓冲后端产生的响应,即使 lighttpd 无法以同样快的速度将响应发送给(较远的)客户端。缓冲后端响应允许后端快速完成响应发送,然后继续服务其他请求。当后端是一个臃肿的 PHP 脚本而 lighttpd 相对轻量时,这会非常有优势。

当后端正在生成一个可能极大的流,并且希望在 lighttpd 无法同样快速地将响应数据发送到客户端时,后端被阻塞,不再发送更多响应数据时,server.stream-response-body = 2 更为适用。尽管这会减少临时文件的数量和大小,但它也会阻止后端生成器发送更多数据,这在某些用例中可能是合意的,但对于大多数常见用例可能不是。这可能适用于后端在小型嵌入式系统上向 lighttpd 生成大型响应的情况,该系统没有大量磁盘空间用于临时文件。另一个可能有用的用例是,如果后端正在从磁盘流式传输大文件,并且由于某种原因(例如后端位于远程机器上)无法向 lighttpd 发送 X-Sendfile 响应头。(例如,请参阅 Docs_ModFastCGI 中的 X-Sendfile 文档)

server.stream-response-body = 0 仅仅意味着 lighttpd 应该在开始向客户端发送响应之前,先缓冲来自后端的整个响应。这目前允许 mod_deflate(如果已配置)在将响应发送到客户端之前对其进行压缩。在大多数情况下,后端响应足够小,后端与 lighttpd 服务器位于同一台机器上,并且后端生成响应的速度足够快,因此 server.stream-response-body = 0server.stream-response-body = 1 之间没有明显的感知差异。但是,对于那些具有需要与默认设置不同调整的用例的用户,该可调参数依然存在。

如果您在内存受限的环境中运行并使用 HTTPS,您可能还需要设置 ssl.read-ahead = "disable" 以防止 lighttpd 缓冲传入数据(例如 POST 数据、文件上传)。详情请参阅 Docs_SSL

gstrauss3 年多前 更新 · 7 次修订