Контролировать флеш-кешинг из вида
Мне интересно, есть ли способ, позволяющий пользователю контролировать свойства кэширования данного представления с помощью Flask-Cache.
Например, я хотел бы, чтобы представление кэшировалось бесконечно, если пользователь не щелкнет reload
ссылка, в этом случае представление будет перегенерировано. Я заметил, что есть unless
kwarg доступен для @cached декоратора, но я не уверен, как его использовать.
Кажется, я должен быть в состоянии добавить url_for('this_view', dont_cache=True)
где-то на this_view
Джинджа шаблон.
1 ответ
Вы можете очистить кеш; учитывая функцию просмотра и полный путь к маршруту, используйте:
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()
танец выше сделает повторную генерацию кеша более надежной.