Как работает флеш-кеширование магазина кеша
Мне просто интересно, как и где хранится ответ при использовании флеш-кэширования на примере флеш-кэширования:
from flask import Flask, request
from flask_caching import Cache
import datetime
app = Flask(__name__)
cache = Cache(app, config={'CACHE_TYPE': 'simple'})
def make_cache_key(*args, **kwargs):
return request.url
@app.route('/', methods=['GET'])
@cache.cached(timeout=50, key_prefix=make_cache_key)
def foo():
time = str(datetime.datetime.now()) + " " + str(request.url)
return time, 200
if __name__ == '__main__':
app.run(debug=True)
1 ответ
ТЛ; др
В вашем примере он будет храниться в памяти интерпретатора Python.
Ваша настройка находится в памяти, поэтому она не будет масштабироваться между несколькими серверами. Однако у вас есть возможность указать другой бэкэнд кэша (например, memcached или Redis, или даже ваш собственный, расширяя базовый класс кеша).
Согласно документам мы видим, что он использует werkzeug:
Помимо обеспечения поддержки всех поддерживаемых бэкэндов кэширования werkzeug через унифицированный API
Затем, когда вы посмотрите на документы кеша werkzeug:
Если вы используете сервер разработки, вы можете создать объект SimpleCache, то есть простой кеш, который хранит элемент в памяти интерпретатора Python.
И затем он продолжает показывать пример, используя ту же настройку ({'CACHE_TYPE': 'simple'}
), который, как он говорит, находится в памяти интерпретатора Python.
Если вы хотите использовать другой бэкэнд кеша, посмотрите на Кэширование Flask:
Встроенные типы кэша:
null: NullCache (по умолчанию) simple: SimpleCache memcached
MemcachedCache (требуется pylibmc или memcache) gaememcached
GAEMemcachedCache redis: RedisCache (требуется Werkzeug 0.7)
файловая система: FileSystemCache saslmemcached: SASLMemcachedCache (требуется pylibmc)