我在码头服务器上运行了一个REST服务,它使用一些资源数据响应GET请求。到目前为止,我检索的数据大约为几 kb。我希望使用一个类似的 REST 服务,它可能会返回大量数据,可能是 100 mb 或更多。由于请求量很低,并且码头服务器和休息客户端进程都已配置足够的内存,因此预计不会出现内存问题。
我想知道码头或任何网络服务器是否对它可以返回给客户端以响应 GET 的数据长度进行了限制。如果是这样,它可以在码头配置吗?
原答案:
Jetty 的 HTTP 响应返回的数据量没有限制。
您可以将数据流式传输回客户端,直到宇宙热寂前不久。
从技术上讲,你可以有一个没有Content-Length
指定的 HTTP 响应,它可以使用Chunked Transfer-Encoding返回,或者只是一个原始的字节流,Connection: close
在结束时指示数据何时完成(完成发送)底层连接。这两者本质上都是无限的。
如果您使用带有Content-Length
标头的 HTTP 响应,请注意 Content-Length实际上是一个 32 位数字,但更现代的浏览器支持 64 位版本。
更新(2019 年 8 月):
Jetty 9.4.20.v20190813 现在可以处理Content-Length
最大大小的标头Long.MAX_VALUE
(9,223,372,036,854,775,807字节)