清除Django Memcached缓存的特定视图缓存键:flush/cache()或删除特定的缓存键。

4

我正在使用Django的Memcached和每个视图缓存机制,其中包括@cache_page(timeout)装饰器。

在特定视图函数内部,我希望清除整个缓存。我尝试了cache.clear()cache._cache.flush_all(),但似乎都无法清除缓存。

是否有其他方法可以做到这一点,或者我的操作方式有误?

编辑: 我意识到完全清除缓存并不是一个好主意,而是删除所需的键。然而,我不知道哪些键是用@cache_page(timeout)装饰器修饰的视图。我该如何获取这些键呢?获取键之后,我只需要执行cache.delete(key)即可吗?

谢谢!


没有真正的好理由去清除整个缓存。只需删除您想要刷新的键,不要对其余部分进行操作。 - Chris Pratt
我不知道那些被@cache_page(timeout)修饰的视图的键是什么。我该如何了解这些键呢? 获取到键之后,只需要执行cache.delete(key)就可以了吗? - keithxm23
请查看这个相关的SO问题:https://dev59.com/rXE95IYBdhLWcg3wi-Yc - Chris Pratt
1个回答

1

清空整个缓存并不是最好的方法。请参考缓存版本控制

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接