Параметр key_prefix
Параметр key_prefix применяется к декораторам cached и memoize
расширения Flask-Caching. Он задаёт строковый префикс,
который добавляется к каждому ключу кэша. Это позволяет
группировать записи и избегать конфликтов между разными
функциями. Значением параметра выступает строка.
Синтаксис
@cache.cached(timeout=50, key_prefix='prefix')
Пример
Давайте закэшируем функцию с собственным префиксом ключа:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@app.route('/')
@cache.cached(timeout=50, key_prefix='index_page')
def index():
return 'hello'
Теперь все записи этой функции хранятся в кэше под ключом
с префиксом 'index_page'.
Пример
Давайте закэшируем функцию с аргументами через memoize
и зададим префикс:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.memoize(timeout=50, key_prefix='user_data')
def get_user(user):
return 'user ' + user
@app.route('/user/<user>')
def user(user):
return get_user(user)
Результат выполнения кода для адреса /user/abcde:
user abcde
Каждый уникальный аргумент user создаёт отдельный ключ
с общим префиксом 'user_data'.
Пример
Давайте очистим кэш только для записей с определённым
префиксом через метод delete:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.cached(timeout=50, key_prefix='articles')
def get_articles():
return ['article 1', 'article 2', 'article 3']
@app.route('/')
def index():
res = get_articles()
cache.delete('articles')
return str(res)
Результат выполнения кода:
['article 1', 'article 2', 'article 3']