flask_cache实现一级缓存

环境:
python 3.6
flask 1.0.2
flask-cache 0.13.1
引入flask_cache后运行时,出现以下错误:
from flask.ext.cache import make_template_fragment_key
ModuleNotFoundError: No module named 'flask.ext'
修改/site-packages/flask_cache/jinja2ext.py中
from flask.ext.cache import make_template_fragment_key

from flask_cache import make_template_fragment_key

flask-cache
安装 pip install flask-cache
选择 simple 类型, 可以实现对响应的内存缓存
https://www.cnblogs.com/cwp-bg/p/9687005.html

from flask import Flask
from flask_cache import Cache
import random


app = Flask(__name__)
# 设置配置
app.config['CACHE_TYPE'] = 'simple'  # 使用本地python字典进行存储, 一级缓存
app.config['CACHE_DEFAULT_TIMEOUT'] = 5 * 60  # 默认过期时间 5分钟

# 创建缓存对象
cache = Cache(app)


@app.route('/')
@cache.cached(timeout=60)  # 对无参数的路由响应进行缓存
def index():
    num = random.randint(0, 9)
    print(num)
    return str(num)

@app.route('/demo1/')  # demo1/11   demo1/12 的缓存结果会做区分
@cache.memoize(timeout=30)
def demo1(user_id):
    num = random.randint(0, 9)
    print(num)
    return str(num)


# 对自定义函数设置缓存
@cache.cached(timeout=20)
def func1():
    num = random.randint(0, 9)
    print(num)
    return str(num)


@app.route('/demo2')
def demo2():
    print('demo2')
    # return func1()
    # 可以对指定的数据进行缓存
    cache.set('name', 'zs', timeout=30)
    return 'demo2'

@app.route('/demo3')
def demo3():
    # 取出缓存
    name = cache.get('name')
    print(name)
    return 'demo3'


if __name__ == '__main__':
    app.run(debug=True)

项目中的应用一般不设置一级缓存:

1.内存缓存会影响web应用的运行效率
2.对响应做缓存的性价比低

你可能感兴趣的:(flask_cache实现一级缓存)