#18473 closed Bug (fixed)
Contradictory advice on middleware order
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Documentation | Version: | 1.4 |
Severity: | Normal | Keywords: | middleware order GZipMiddleware UpdateCacheMiddleware |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
From https://docs.djangoproject.com/en/dev/ref/middleware/#django.middleware.gzip.GZipMiddleware
It is suggested to place this first in the middleware list, so that the compression
of the response content is the last thing that happens.
From https://docs.djangoproject.com/en/dev/topics/cache/#order-of-middleware-classes
you need to make sure that UpdateCacheMiddleware appears before any other middleware
that might add something to the Vary header. The following middleware modules do so:
SessionMiddleware adds Cookie
GZipMiddleware adds Accept-Encoding
I suspect https://docs.djangoproject.com/en/dev/ref/middleware/#django.middleware.gzip.GZipMiddleware might need to be changed. With GZipMiddleware first, not only will it alter the "Vary" header handling, but presumably it will be recompressing the uncompressed cached content on each request, and it would be better to cache the compressed content instead.
Change History (3)
comment:1 by , 12 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Type: | Cleanup/optimization → Bug |
comment:2 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The gzip docs should say something like it should run after anything else that needs to read/write the response body.