我正在使用django的Memcached和带有@cache_page(timeout)
装饰器的每视图缓存机制。
在特定的视图功能中,我希望清除整个缓存。
我尝试了cache.clear()
和cache._cache.flush_all()
,但似乎都没有刷新缓存。
还有其他方法可以做到这一点,还是我做错了?
编辑: 我意识到完全清除缓存并不是一个好主意,而只是删除所需的密钥。但是,我不知道用@cache_page(超时)装饰的视图的键如何了解这些?在我获得密钥后,我只做一个cache.delete(密钥)?
谢谢!
答案 0 :(得分:1)
有一种比刷新整个缓存更好的方法。见cache versioning:
当您更改使用缓存值的运行代码时,您可能需要 清除任何现有的缓存值。最简单的方法是 刷新整个缓存,但这可能导致缓存值丢失 仍然有效且有用。
Django提供了一种更好的方法来定位单个缓存值。 Django的缓存框架有一个系统范围的版本标识符, 使用VERSION缓存设置指定。此设置的值 自动与缓存前缀和用户提供的内容结合使用 缓存键以获取最终缓存密钥。