- From: Martin Thomson <martin.thomson@gmail.com>
- Date: Thu, 28 Apr 2016 18:00:03 +1000
- To: Jesse Wilson <jesse@swank.ca>
- Cc: Amos Jeffries <squid3@treenet.co.nz>, HTTP Working Group <ietf-http-wg@w3.org>
On 28 April 2016 at 11:46, Jesse Wilson <jesse@swank.ca> wrote: > As I understand this, nginx sets the default window size to 0 for all > streams. The flow control window isn’t expanded from 0 until nginx finds a > module to accept the request. In terms of round trips this seems like a > regression from HTTP/1.1: Yes, think of this as equivalent to forcing 100-continue on every request. That has the effect of discouraging requests with bodies for performance reasons. This is definitely unfortunate from the perspective of performance, but it's an understandable position. What a server is _expected_ to do is buffer up to the connection-level flow control window. However, it might be that 64k per connection (plus request header fields) is too much for some servers and RST_STREAM is the only option. I would hope that only constrained devices do that, but - as Roberto is fond of pointing out - servers are effectively constrained devices. A better solution all around would be to set a small connection-level flow control window and to allow that much data to be buffered. That would allow requests that fit into that window to avoid the round trip tax. (For the galleries, the SETTINGS ack thing was a red herring, nginx rejects requests with bodies. Which of course you won't send once the SETTINGS are applied.)
Received on Thursday, 28 April 2016 08:00:31 UTC