4

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

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

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

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

谢谢!

4

1 回答 1

1

有比刷新整个缓存更好的方法。请参阅缓存版本控制

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

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

于 2012-06-28T15:11:01.337 回答