Django - истекает кеш шаблонов django на основе переменных - PullRequest
5 голосов
/ 22 ноября 2010

Нетрудно аннулировать определенный кеш шаблонов в django

def invalidate_cache_key(fragment_name, *variables):
   args = md5_constructor(u':'.join([urlquote(var) for var in variables]))
   cache_key = 'template.cache.%s.%s' % (fragment_name, args.hexdigest())
   cache.delete(cache_key)

Однако у меня есть ситуация, когда мне нужно удалить все кэшированные фрагменты, которым передана определенная переменная. Например, удалить все кэшированные фрагменты об автомобиле марки «Тойота».

{% cache 100000 car_content car.brand %}

По сути, есть ли способ получить все cache_keys на основе определенного набора критериев? Я опасно думал об изменении источника кеша, но мне было интересно, может ли быть лучшее решение этой проблемы.

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Я делаю это с кэшированием пространств имен. Вот достойное объяснение:

http://blog.dberg.org/2008/07/user-based-memcached-namespaces.html

0 голосов
/ 12 апреля 2012

Используйте дату в ключе кеша:

{% cache 100000 car_content car.brand car.brand.last_modified %}

Таким образом, все фрагменты создаются при каждом изменении бренда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...