Removendo itens específicos do cache do Django?

Estou usando o cache em todo o site com o memcached como back-end. Eu gostaria de invalidar páginas no cache quando o object de database subjacente é alterado.

Se o nome da página for alterado, invalidaria todo o cache (pois afeta a navegação em todas as páginas. Desajeitado, mas suficiente para minhas necessidades).

Se apenas o conteúdo da página for alterado, eu gostaria de invalidar o cache dessa página.

Existe uma maneira fácil de fazer isso?

A solução do tghw não funciona, porque a chave do cache NÃO é o caminho absoluto. A chave é calculada a partir do caminho absoluto e dos headers HTTP. Veja esta questão para um exemplo.

Eu não fiz muito cache com o Django, mas acho que o que você quer aqui são signals .

Você pode configurar um sinal post_save no object subjacente e fazer com que a function de retorno de chamada invalide essa página no cache.

 from django.core.signals import post_save from django.core.cache import cache def invalidate_cache(sender, **kwargs): # invalidate cache cache.delete(sender.get_absolute_url()) # or any other pertinent keys post_save.connect(invalidate_cache, sender=UnderlyingModel) 

Isso deve remover corretamente o item do cache quando for atualizado.

    Intereting Posts