使用Flask-Cache缓存实现给Flask提速的方法详解

作者:TKtalk 时间:2022-11-12 23:06:03 

本文实例讲述了使用Flask-Cache缓存实现给Flask提速的方法。分享给大家供大家参考,具体如下:

Django里面可以很方便的应用缓存,那Flask里面没准备这么周全怎么办?自己造轮子么?不用的,前人种树后人乘凉,我们有Flask-Cache,用起来和Django里面一样方便哦!

1.安装


pip install Flask-Cache

2.配置

以我的zhihu项目(源码)为例:

在config.py里面,设置simple缓存类型,也可以用第三方的redis之类的,和Django一样,装好redis改下设置就行


class Config:
 #省略
 CACHE_TYPE = 'simple'

在app/init.py里面


from flask_cache import Cache
#缓存
cache = Cache()
def create_app(config_name):
 app = Flask(__name__)
 #此处省略若干字
 cache.init_app(app)
 #工厂函数返回创建的程序示例
 return app

3.应用

在views.py里面


from .. import db, cache
from . import main
from ..decorators import admin_required, permission_required
@main.route('/', methods=['GET','POST'])
@cache.cached(timeout=300,key_prefix='index')#设置一个key_prefix来作为标记,然后,在内容更新的函数里面调用cache.delete('index')来删除缓存来保证用户访问到的内容是最新的
def index():
   print("命令行里显示我就是调用这个函数了没走缓存,不显示我就是直接走缓存没吊用函数")
 # 省略
 return render_template('index4.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)

执行一遍,看看有没有print输出,就可以看到缓存是否生效

4.清除缓存

第一种方法就是设置过期时间自动清除,可以在 Flask 的config里面加上配置项:

CACHE_DEFAULT_TIMEOUT 或者装饰器加参数timeout=50

第二种方法就是主动删除,比如@cache.cached(timeout=300,key_prefix='index')设置好了缓存,删除的时候用cache.delete('index')即可


@main.route('/askquestion', methods=['GET','POST'])
@login_required
def askquestion():
 #提问题写入数据库操作省略
 cache.delete('index')#删除缓存
 return render_template('askquestion.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)

就像上面如果没设置key的话,默认的key_prefix='view/%s',这个%s就是请求的路径request.path,所以如果用@cache.cached(timeout=300)建立缓存就可以用cache.delete('view//')来清除缓存了,请求路径有的函数没有,最好设置key来搞

还有一种清除所有缓存的cache.clear()

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

来源:https://blog.csdn.net/u013205877/article/details/78013289

标签:Flask-Cache,缓存,Flask
0
投稿

猜你喜欢

  • MSSQL存储过程学习笔记一 关于存储过程

    2024-01-17 18:59:43
  • 用vue.js组件模拟v-model指令实例方法

    2022-04-16 10:12:23
  • golang使用map支持高并发的方法(1000万次操作14ms)

    2024-05-13 10:41:33
  • 按钮在 IE 中两边被拉伸的 BUG

    2008-11-17 20:37:00
  • JavaScript判断两个数组相等的4类方法总结

    2024-05-02 16:17:47
  • Python中字典及遍历常用函数的使用详解

    2021-06-25 13:06:03
  • Python语言生成水仙花数代码示例

    2022-11-16 18:17:48
  • 手把手带你走进Go语言之常量解析

    2024-05-08 10:44:38
  • sql 版本详解 让你认识跟sql2000的区别

    2024-01-26 03:58:34
  • 在Apache服务器上同时运行多个Django程序的方法

    2022-05-16 11:16:09
  • Python 迭代器Iterator详情

    2021-10-12 07:01:42
  • 修改 CentOS 6.x 上默认Python的方法

    2023-08-07 10:02:59
  • JavaScript随机打乱数组顺序之随机洗牌算法

    2024-05-03 15:33:00
  • Python函数式编程指南:对生成器全面讲解

    2022-09-26 05:56:17
  • 关于python中密码加盐的学习体会小结

    2022-05-13 09:47:04
  • Python自定义线程池实现方法分析

    2021-12-17 09:13:10
  • python中split(), os.path.split()和os.path.splitext()的用法

    2022-03-23 09:06:40
  • python使用rpc框架gRPC的方法

    2021-02-28 06:28:37
  • ASP中遍历和操作Application对象的集合

    2007-09-13 12:45:00
  • numpy数组切片的使用

    2023-10-30 04:36:24
  • asp之家 网络编程 m.aspxhome.com