提供大型 PDF,我应该设置 content-length 吗?

Serving large PDF, should I set content-length?

我动态创建 pdf 文档并希望在我的处理程序中提供它们。我将 content-type 设置为 application/pdf,它工作正常。我 运行 我的服务器通过 nginx 代理。

我的问题是某些请求会针对同一文档生成很多其他请求。我查看了 headers 并发现它需要分块传输编码。

我的解决方案是设置 content-length,它似乎工作正常。

我想知道这是否足够以及为什么我从来不需要用简单的 html 页面来做。

A comment in the source code says:

If the handler didn't declare a Content-Length up front, we either go into chunking mode or, if the handler finishes running before the chunking buffer size, we compute a Content-Length and send that in the header instead.

如果要避免分块,请设置内容长度。为大响应设置内容长度确实减少了传输的数据量,并且可以减少 HTTP 服务器内的复制。

根据经验,如果在生成响应正文之前已知长度,请设置内容长度。

您的简单 HTML 页面可能小于分块缓冲区大小。如果是这样,则它们没有分块。