#33604: Allow `CacheMiddleware.key_prefix` to be a callable
-------------------------------------+-------------------------------------
     Reporter:  Alexandru            |                    Owner:  nobody
  Mărășteanu                         |
         Type:  New feature          |                   Status:  new
    Component:  Core (Cache system)  |                  Version:  dev
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

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>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107017fd1a978ff-c6af3e99-6c61-44f6-93ca-7972f3c088c0-000000%40eu-central-1.amazonses.com.

Reply via email to