There exists https://github.com/peterbe/django-fancy-cache but I was able
to address this by extending the built-in middleware so I really don't see
an argument for a 3rd party package.
I'll try to open a PR for this.
--
Ticket URL: <https://code.djangoproject.com/ticket/33604>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by Mariusz Felisiak):
Thanks for the ticket. Dynamic prefixes are not supported, however you can
use the [https://docs.djangoproject.com/en/stable/topics/cache/#cache-key-
transformation KEY_FUNCTION] cache setting and changed `key_prefix`
dynamically. I'm not convinced that we really need another option here.
--
Ticket URL: <https://code.djangoproject.com/ticket/33604#comment:1>
Comment (by Alexandru Mărășteanu):
Replying to [comment:1 Mariusz Felisiak]:
> Thanks for the ticket. Dynamic prefixes are not supported, however you
can use the [https://docs.djangoproject.com/en/stable/topics/cache/#cache-
key-transformation KEY_FUNCTION] cache setting and changed `key_prefix`
dynamically. I'm not convinced that we really need another option here.
The need is to cache dynamically depending on the current request, on
request properties like the user, or the query params etc. One of my use
cases is to cache pages for anonymous users only. Another one is to cache
pages based on some value stored in Redis. Another thing I want to do is
to force it to skip the cache based on a query param (appending a random
value is not always possible). Currently I do this with a custom
middleware which extends the builtin one and simply updates
`self.key_prefix` at the appropriate times. It seems to me it's a small
change with great utility.
The `KEY_FUNCTION` would be useful here if it received the request. But
allowing a callable `key_prefix` is a lot cheaper than changing the
signature of `KEY_FUNCTION`.
--
Ticket URL: <https://code.djangoproject.com/ticket/33604#comment:2>