Как работает флеш-кеширование магазина кеша

Мне просто интересно, как и где хранится ответ при использовании флеш-кэширования на примере флеш-кэширования:

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)

Другие вопросы по тегам