1.介绍
在flask当中,以flask开头的包一般就是flask插件,比如之前在orm模型以及数据迁移时候使用的“flask_sqlalchemy”, “flask_migrate”。每个插件的功能不一样,用法不同。这次介绍flask的缓存插件,flask_cache。
2.flask_cache应用背景
在什么时候用到这个flask_cache呢,缓存一般是用在请求非常频繁且不改动的数据上,现实中比如京东官网的首页,访问的人数巨多,那么可以将这个首页做个缓存,这样当有大量请求时,直接通过缓存加载出首页就非常高效了,给用户的体验也很好。
3.flask_cache安装
pip install flask-caching
4.flask_cache初始化
from flask_caching import Cache
# orm模型对象
db = SQLAlchemy()
# 迁移对象
migrate = Migrate()
# 缓存
cache = Cache(
config={"CACHE_TYPE": "simple"}
)
# 创建插件函数
def init_exts(app):
"""
初始化插件
@param app: flask对象
@return: app
"""
db.init_app(app)
migrate.init_app(app, db=db)
cache.init_app(app=app)
导入的Cache模块需要写入config参数,表明缓存的类型是什么,这里写出“simple”,是简单类型的意思
5.flask_cache使用
在视图函数上使用装饰器的方式调用缓存,格式:@cache.cached(timeout=xx),要填写个timeout参数作为超时时间。
如下所示,给首页加个缓存
@user_bp.route('/')
@cache.cached(timeout=20) # 给视图函数加缓存,20秒的超时时间
def index():
time.sleep(5)
return 'index'
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [29/Dec/2023 14:38:27] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:38:28] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [29/Dec/2023 14:38:33] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:38:37] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:38:38] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:38] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:43] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:44] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:46] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:47] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:49] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:49] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:50] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:40:54] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [29/Dec/2023 14:41:05] "GET / HTTP/1.1" 200 -
上述首页函数中,模拟加载慢的情况,等待5秒响应,有了缓存之后,等再次访问首页时,20秒内调用的是缓存,这样就提高了用户体验度。
The end ! Thanks !
-----------我是有底线的!-----------