使用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根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
python字典get()方法用法分析
Apr 17 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
简单了解django索引的相关知识
Jul 17 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
Python打印特殊符号及对应编码解析
May 07 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
如何理解Python中的变量
Jun 01 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
Django怎么在admin后台注册数据库表
Nov 14 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
关于文本留言本的分页代码
2006/10/09 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Python写的一个简单监控系统
2015/06/19 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python画折线图的程序
2018/07/26 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
人事部专员岗位职责
2014/03/04 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
python实现学生信息管理系统(面向对象)
2022/06/05 Python