我想知道是否有办法允许用户使用Flask-Cache控制给定视图的缓存属性。
例如,除非用户单击链接,否则我希望无限期地缓存视图reload
,在这种情况下,视图将被重新生成。我注意到@cached 装饰器有一个unless
可用的kwarg,但我不确定如何使用它。
看来我应该可以在Jinja 模板的url_for('this_view', dont_cache=True)
某个地方添加一个。this_view
我想知道是否有办法允许用户使用Flask-Cache控制给定视图的缓存属性。
例如,除非用户单击链接,否则我希望无限期地缓存视图reload
,在这种情况下,视图将被重新生成。我注意到@cached 装饰器有一个unless
可用的kwarg,但我不确定如何使用它。
看来我应该可以在Jinja 模板的url_for('this_view', dont_cache=True)
某个地方添加一个。this_view
可以清除缓存;给定视图函数和路径的完整路径,使用:
from flask import current_app
with current_app.test_request_context(path=path):
# the cache key can use `request` so we need to provide the correct
# context here
cache_key = view.make_cache_key()
cache.delete(cache_key)
这path
是视图的路径;您可以使用path = url_for('this_view')
它来生成它,并且view
是您使用的(装饰的)函数对象@cache.cached()
。cache
是 Flask-Cache 对象。
清除缓存后,对该视图的新请求将重新生成它。
如果您从未设置自定义key_prefix
(可调用或字符串),则给定视图的默认缓存键基于该request.path
值;你也可以使用它:
cache_key = 'view/{}'.format(url_for('this_view'))
cache.delete(cache_key)
但是上面的current_app.test_request_context
/ view.make_cache_key()
dance 会让你的缓存键重新生成更加健壮。