Correct me if I'm wrong, but wouldn't this place more load on the server to to this, as an anonymous user visiting the site for the first time would start a new session, and therefore bypass the cache?
Is there a way I could hack the middleware to look at something besides the HTTP headers to determine caching? My main question is this: If I changed the templates so there was only two versions (one for authenticated users that said log out, and one for anonymous users that said log in, how could I get the cache middleware to vary on request.user.is_authenticated, and the value of the cookie header? On Oct 30, 10:50 pm, Malcolm Tredinnick <[EMAIL PROTECTED]> wrote: > On Tue, 2007-10-30 at 05:43 -0700, Joe wrote: > > I am running into a performace problem with Django and scaling. > > > I have enabled the caching middleware, but had to set > > CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True so I could continue to use the > > admin interface. > > > Now, authenticated users are beginning to put a noticeable load on the > > server. > > > How do I implement caching on my normal views for authenticated > > users? I can't just use the decorator because I have a "Hello, > > Username" message on the page. > > I keep meaning to look at this further, because I'm sure that if we work > it out properly, CACHE_MIDDLEWARE_ANONYMOUS_ONLY shouldn't be necessary. > So what I'm saying here is based on no testing, but it will take you two > minutes to try out and see. > > There's a middleware ordering problem here: if you're using > CACHE_MIDDLEWARE_ANONYMOUS_ONLY, you need to have the session middleware > come *before* the cache middleware in the middleware ordering. This is > so that on the request path, we already know if the user is anonymous > before attempting to hit the cache. > > If you turn off CACHE_MIDDLEWARE_ANONYMOUS_ONLY, you should put the > session middleware *after* the cache middleware. This is because the > important path here is the response path: the session middleware sets > the Vary: Cookie header and so the cache middleware knows to use that to > generate the cache key. > > So, just flipping the anonymous caching setting isn't all you need to do > in this case. You also need to move the SessionMiddleware. Put it after > CacheMiddleware in MIDDLEWARE_CLASSES and see if that improves things. > This might not solve all your problems in one swing, since it will > generate a new cache key for every session cookie. So if you are getting > lots of different users, you'll eventually toss old entries out from the > cache and have to regenerate them. > > What we need to do, longer-term is solve the problem of how to split > request ordering and response ordering for middleware (and this list > isn't the place for that discussion) so that we can have something on > the request path to say "all anonymous users should be treated the > same", whilst letting the session middleware have the chance to set the > "Vary: Cookie" header before it gets to the cache middleware so that > authenticated users are cached properly. Right now, we can't do both. > It'll be fixed one day. > > Regards, > Malcolm > > -- > How many of you believe in telekinesis? Raise my > hand...http://www.pointy-stick.com/blog/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---