nginx / unit

NGINX Unit - universal web app server - a lightweight and versatile open source server that simplifies the application stack by natively executing application code across eight different programming language runtimes.
https://unit.nginx.org
Apache License 2.0
5.41k stars 332 forks source link

Chunked: Unit can send data to target from buffers before full stream is received #1282

Open avahahn opened 6 months ago

avahahn commented 6 months ago

Unit currently buffers the entire client request before sending it to an upstream target. This target could be an application or an upstream HTTP service. Either way, Unit will not start transferring data until it has the whole request from the client.

In order to support more expedient request processing Unit could possibly start streaming its requests to upstream and application targets as soon as it begins receiving data from the client. In order to accomplish that this ticket embodies the following work

gourav-kandoria commented 2 months ago

@avahahn just curious to know. as at present router store the whole request body-content in buffer. and then send to upstream server or application. Under new implementation, there won't be any need of buffering of whole request right? or would it still be there ?

ac000 commented 2 months ago

@avahahn just curious to know. as at present router store the whole request body-content in buffer. and then send to upstream server or application. Under new implementation, there won't be any need of buffering of whole request right? or would it still be there ?

@gourav-kandoria

With the current implementation of chunked requests, Unit will still buffer the request up and then convert it to a 'Content-Length' request to pass onto the application.

This may change in the future...