Opened 8 years ago

Closed 7 years ago

#6452 closed (fixed)

Catch 22 in Cache Documentation

Reported by: pavera Owned by: nobody
Component: Documentation Version: master
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

In the cache documentation it states that to cache anonymous requests only (IE you don't want to cache logged in user pages) you use CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True in the settings file. It then states that to use this successfully CacheMiddleware must appear after AuthenticationMiddleware, which makes sense. Under Order of MIDDLEWARE_CLASSES in the same document however, it says CacheMiddleware should appear before SessionMiddleware so that headers are set correctly, which seems to make sense to me as well.

Unfortunately, there is an already existing requirement that AuthenticationMiddleware must come after SessionMiddleware, so the only way to phrase this and get Django to run successfully is:

  1. SessionMiddleware
  2. AuthenticationMiddleware
  3. CacheMiddleware

However, that violates the documentation which states that CacheMiddleware should come before SessionMiddleware.

I do not know if this is an error in the documentation, or if some hacking needs to be applied to the various middlewares so that all of the requirements can be satisfied.

Change History (2)

comment:1 Changed 8 years ago by Simon Greenhill <dev@…>

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

comment:2 Changed 7 years ago by ubernostrum

  • Resolution set to fixed
  • Status changed from new to closed

[8260] fixed this by splitting up the cache middleware into separate classes which can be placed at the correct points.

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