You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/middleware.md
+10-1Lines changed: 10 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -178,6 +178,14 @@ Handles GZip responses for any request that includes `"gzip"` in the `Accept-Enc
178
178
179
179
The middleware will handle both standard and streaming responses.
180
180
181
+
??? info "Buffer on streaming responses"
182
+
On streaming responses, the middleware will buffer the response before compressing it.
183
+
184
+
The idea is that we don't want to compress every small chunk of data, as it would be inefficient.
185
+
Instead, we buffer the response until it reaches a certain size, and then compress it.
186
+
187
+
This may cause a delay in the response, as the middleware waits for the buffer to fill up before compressing it.
188
+
181
189
```python
182
190
from starlette.applications import Starlette
183
191
from starlette.middleware import Middleware
@@ -198,7 +206,8 @@ The following arguments are supported:
198
206
*`minimum_size` - Do not GZip responses that are smaller than this minimum size in bytes. Defaults to `500`.
199
207
*`compresslevel` - Used during GZip compression. It is an integer ranging from 1 to 9. Defaults to `9`. Lower value results in faster compression but larger file sizes, while higher value results in slower compression but smaller file sizes.
200
208
201
-
The middleware won't GZip responses that already have a `Content-Encoding` set, to prevent them from being encoded twice.
209
+
The middleware won't GZip responses that already have either a `Content-Encoding` set, to prevent them from
210
+
being encoded twice, or a `Content-Type` set to `text/event-stream`, to avoid compressing server-sent events.
0 commit comments