明确清除django memcached flush / cache()或删除特定的每视图缓存密钥

时间:2012-06-28 14:49:21

标签: django caching memcached clear flush

我正在使用django的Memcached和带有@cache_page(timeout)装饰器的每视图缓存机制。

在特定的视图功能中,我希望清除整个缓存。 我尝试了cache.clear()cache._cache.flush_all(),但似乎都没有刷新缓存。

还有其他方法可以做到这一点,还是我做错了?

编辑: 我意识到完全清除缓存并不是一个好主意,而只是删除所需的密钥。但是,我不知道用@cache_page(超时)装饰的视图的键如何了解这些?在我获得密钥后,我只做一个cache.delete(密钥)?

谢谢!

1 个答案:

答案 0 :(得分:1)

有一种比刷新整个缓存更好的方法。见cache versioning

  

当您更改使用缓存值的运行代码时,您可能需要   清除任何现有的缓存值。最简单的方法是   刷新整个缓存,但这可能导致缓存值丢失   仍然有效且有用。

     

Django提供了一种更好的方法来定位单个缓存值。   Django的缓存框架有一个系统范围的版本标识符,   使用VERSION缓存设置指定。此设置的值   自动与缓存前缀和用户提供的内容结合使用   缓存键以获取最终缓存密钥。