在Flask-Cache或Flask-Caching中删除特定的缓存

8
我正在使用Flask缓存来开发我的Python API。

目前,我正在使用修饰符@app.cache.memoize(cache_memoize_value) ,通过调用 app.cache.delete_memoized(view)进行删除。

问题在于 memoize会被缓存n次,而不是特定的时间。如果我想要指定缓存的超时时间,我需要使用修饰符@app.cache.cached(timeout=300) 并使用app.cache.clear()进行清除。然而,这个清除方法会清除所有的东西,而不仅仅是特定的视图。

那么,我该如何在使用cached修饰符的同时只清除特定的视图呢?


事实上,我遇到了同样的问题。有一个名为 delete 的函数,但是 API 上写着:delete(*args, **kwargs)内部缓存对象的代理函数。 - tim
2个回答

12
  • 对于cache.cached(),使用cache.delete()删除特定的缓存,传递缓存键(默认为view/<request.path>)。
  • 对于cache.memoize(),使用cache.delete_memoized()删除特定的缓存,传递缓存键(默认为函数名及其参数)。
  • 使用cache.clear() 删除所有的缓存数据。

1
我想提供一个参考,如果你需要删除特定的缓存值,可以这样做: cache.delete_memoized(function_with_cache_decorator, value_to_delete) - Lucas

3

实际上这很容易,我应该早点尝试。 就像缓存装饰器一样,你可以在memoized装饰器中指定一个值。 但是不要这样做: @app.cache.memoize(cache_memoize_value)

你需要这样做: @app.cache.memoize(timeout=cache_memoize_value)


1
你知道如何删除特定的缓存吗?如果我想要缓存视图。 - tim
只需在不是function_with_cache_memoize_decorator函数内部使用cache.delete_memoized(function_with_cache_memoize_decorator, param1, param2) - undefined

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