环境:
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.对响应做缓存的性价比低