使用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编程中的字符串
Oct 14 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Python字符串格式化输出代码实例
Nov 22 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 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
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
微信小程序实现简易table表格
2020/06/19 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
python发布模块的步骤分享
2014/02/21 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python中装饰器的一个妙用
2015/02/08 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
电子商务专业推荐信范文
2013/12/02 职场文书
小学毕业感言50字
2014/02/16 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
小学生差生评语
2014/12/29 职场文书
领导离职感言
2015/08/03 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js