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


Posted in Python onJune 11, 2019

本文实例讲述了使用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程序设计有所帮助。

Python 相关文章推荐
低版本中Python除法运算小技巧
Apr 05 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
django rest framework之请求与响应(详解)
Nov 06 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
Python3远程监控程序的实现方法
Jul 15 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
python实现简单学生信息管理系统
Apr 09 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
python装饰器代码深入讲解
Mar 01 Python
Python基础学习之奇异的GUI对话框
May 27 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 #Python
Python中@property的理解和使用示例
Jun 11 #Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 #Python
详解Python3之数据指纹MD5校验与对比
Jun 11 #Python
Python自动抢红包教程详解
Jun 11 #Python
python解压TAR文件至指定文件夹的实例
Jun 10 #Python
python pyinstaller 加载ui路径方法
Jun 10 #Python
You might like
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
php strftime函数的详细用法
2018/06/21 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
理解python正则表达式
2016/01/15 Python
使用Python写个小监控
2016/01/27 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Pytorch释放显存占用方式
2020/01/13 Python
python算的上脚本语言吗
2020/06/22 Python
基于opencv实现简单画板功能
2020/08/02 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
中医药大学市场营销专业自荐信
2013/09/29 职场文书
外国语学院毕业生自荐信
2013/10/28 职场文书
英语求职信范文
2014/05/23 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
教师自查自纠材料
2014/10/14 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
js实现上传图片到服务器
2021/04/11 Javascript