Opened 13 years ago

Closed 12 years ago

Last modified 12 years ago

#18473 closed Bug (fixed)

Contradictory advice on middleware order

Reported by: david@… 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 Luke Plant, 13 years ago

Triage Stage: UnreviewedAccepted
Type: Cleanup/optimizationBug

The gzip docs should say something like it should run after anything else that needs to read/write the response body.

comment:2 by Tim Graham <timograham@…>, 12 years ago

Resolution: fixed
Status: newclosed

In 3e0857041b6bfc9deef392315c978abede706c92:

Fixed #18473 - Fixed a suggestion that GZipMiddleware needs to be first in the list of middleware.

comment:3 by Tim Graham <timograham@…>, 12 years ago

In 73991b0b325f07fc62179c3684ed921f141e69ce:

[1.4.X] Fixed #18473 - Fixed a suggestion that GZipMiddleware needs to be first in the list of middleware.

Backport of 3e0857041b from master

Note: See TracTickets for help on using tickets.
Back to Top