使用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
猜你喜欢
- 本文的目的是探讨JS相关技术,并不是以杀毒为主要目的,杀毒只是为讲解一些JS做铺垫的,呵呵,文章有点长,倒杯咖啡或者清茶慢慢看,学习切勿急躁
- 利用空闲几天把《JavaScript权威指南》安静的读了一篇。真是一本好书呀!呵呵,这句话见的太多了。好在什么地方呢?听我慢慢道来。从开始接
- 一、决策树原理决策树是用样本的属性作为结点,用属性的取值作为分支的树结构。 决策树的根结点是所有样本中信息量最大的属性。树的中间结点是该结点
- 安装完python之后,我们可以做两件事情,1.将安装目录中的Doc目录下的python331.chm使用手册复制到桌面上,方便学习和查阅2
- 概述TensorFlow2 的基本操作和 Numpy 的操作很像. 今天带大家来看一看 TensorFlow 的基本数据操作.创建数据详细讲
- 本文实例讲述了Python打印scrapy蜘蛛抓取树结构的方法。分享给大家供大家参考。具体如下:通过下面这段代码可以一目了然的知道scrap
- pyquery的使用一、pyquery的介绍使用pyquery需要在Web和了解jQuery的基础上,使用该CSS选择器。二、pyquery
- 0x01 安装pyinotify>>> pip install pyinotify>>> import
- 设计一个算法,将URL转换成5部分,分别是:schema、netloc、path、query_params、fragment。问题URL的中
- 先上代码,主要语句为np.where(b[c]==1),详细解释如下:import numpy as np b = np.array([[-
- 鉴于上一篇中最后三个问题:1、上述程序是否能进行优化(比如功能相同的)2、创建三个3个实例,用了3个语句,能否建一个函数,只输入一个数n,就
- 本文实例讲述了Python找出序列中出现次数最多的元素。分享给大家供大家参考,具体如下:问题:找出一个元素序列中出现次数最多的元素是什么解决
- 在WEB2.0 网页充斥的年代,身边无时无刻都听到这样的声音:“拒绝海报式设计,要做有用的设计,要简洁,要清爽,要大气”产品经理
- Python 包含6种数据类型,其中Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary
- 1、开源库 Web 领域:Sanic https://github.com/channelcat/sanic这个库的名字和之前一个
- pandas的qcut可以把一组数字按大小区间进行分区,比如data = pd.Series([0,8,1,5,3,7,2,6,10,4,9
- 一、背景实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本通过celery 实现调度主要思想是 通过引入
- 一、浏览器允许每个域名所包含的 cookie 数:Microsoft 指出 Internet Explorer 8 增加 cookie 限制
- PIL:使用python自带图像处理库读取出来的图片格式numpy:使用python-opencv库读取出来的图片格式tensor:pyto
- 本文实例为大家分享了python访问者模式代码,供大家参考,具体内容如下"""访问者模式""