com.sun.net.httpserver.HttpServer是否支持单连接流水线操作?它似乎并行处理多个客户端,但是单个连接的请求正在连续执行。
这是否准确?若然,有办法解决这个问题吗?
答案 0 :(得分:0)
符合HTTP 1.1的HTTP服务器应支持流水线操作。请注意,客户端也应支持流水线操作 根据{{3}}
API提供了部分内容 RFC 2616(HTTP 1.1)的实现 和RFC 2818(HTTP over TLS)。
似乎暗示com.sun.net.httpserver.HttpServer
并不完全支持HTTP1.1
HttpURLConnection
不支持管道传输,因此我倾向于认为com.sun.net.httpserver.HttpServer
也不支持管道传输。
你说你做了一些测试。你是怎么测试的?
<强>更新强>:
从注释中可以看出支持流水线操作
如果你正如你所说的那样发送流水线请求,那么响应应该根据请求的到达而返回(与完成每个请求所需的时间无关,即某些请求比其他请求更快)。
答案 1 :(得分:0)
HTTP流水线操作意味着非常简单:客户端可以在不读取先前响应的情况下向连接写入下一个请求。
任何http服务器都不支持流水线操作。它必须向前看,如果它找到超出当前请求的可用字节,它需要中止...但这太荒谬了,没有人这样做。
这与服务器处理请求的方式无关 - 串行或并行。并行执行当然更加困难,并且有一些问题必须解决。