使用Flask-Cache緩存實(shí)現(xiàn)給Flask提速的方法詳解
本文實(shí)例講述了使用Flask-Cache緩存實(shí)現(xiàn)給Flask提速的方法。分享給大家供大家參考,具體如下:
Django里面可以很方便的應(yīng)用緩存,那Flask里面沒(méi)準(zhǔn)備這么周全怎么辦?自己造輪子么?不用的,前人種樹(shù)后人乘涼,我們有Flask-Cache,用起來(lái)和Django里面一樣方便哦!
1.安裝
pip install Flask-Cache
2.配置
以我的zhihu項(xiàng)目(源碼)為例:
在config.py里面,設(shè)置simple緩存類(lèi)型,也可以用第三方的redis之類(lèi)的,和Django一樣,裝好redis改下設(shè)置就行
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) #工廠函數(shù)返回創(chuàng)建的程序示例 return app
3.應(yīng)用
在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')#設(shè)置一個(gè)key_prefix來(lái)作為標(biāo)記,然后,在內(nèi)容更新的函數(shù)里面調(diào)用cache.delete('index')來(lái)刪除緩存來(lái)保證用戶訪問(wèn)到的內(nèi)容是最新的 def index(): print("命令行里顯示我就是調(diào)用這個(gè)函數(shù)了沒(méi)走緩存,不顯示我就是直接走緩存沒(méi)吊用函數(shù)") # 省略 return render_template('index4.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)
執(zhí)行一遍,看看有沒(méi)有print
輸出,就可以看到緩存是否生效
4.清除緩存
第一種方法就是設(shè)置過(guò)期時(shí)間自動(dòng)清除,可以在 Flask 的config里面加上配置項(xiàng):
CACHE_DEFAULT_TIMEOUT 或者裝飾器加參數(shù)timeout=50
。
第二種方法就是主動(dòng)刪除,比如@cache.cached(timeout=300,key_prefix='index')
設(shè)置好了緩存,刪除的時(shí)候用cache.delete('index')
即可
@main.route('/askquestion', methods=['GET','POST']) @login_required def askquestion(): #提問(wèn)題寫(xiě)入數(shù)據(jù)庫(kù)操作省略 cache.delete('index')#刪除緩存 return render_template('askquestion.html', form=form, posts=posts,show_followed=show_followed, pagination=pagination)
就像上面如果沒(méi)設(shè)置key的話,默認(rèn)的key_prefix='view/%s'
,這個(gè)%s
就是請(qǐng)求的路徑request.path
,所以如果用@cache.cached(timeout=300)
建立緩存就可以用cache.delete('view//')
來(lái)清除緩存了,請(qǐng)求路徑有的函數(shù)沒(méi)有,最好設(shè)置key來(lái)搞
還有一種清除所有緩存的cache.clear()
希望本文所述對(duì)大家基于Flask框架的Python程序設(shè)計(jì)有所幫助。
- Python的Flask框架使用Redis做數(shù)據(jù)緩存的配置方法
- Flask框架學(xué)習(xí)筆記(一)安裝篇(windows安裝與centos安裝)
- Python Web框架Flask下網(wǎng)站開(kāi)發(fā)入門(mén)實(shí)例
- Python的Flask框架中@app.route的用法教程
- 30分鐘搭建Python的Flask框架并在上面編寫(xiě)第一個(gè)應(yīng)用
- Python的Flask框架中web表單的教程
- 使用Python的Flask框架來(lái)搭建第一個(gè)Web應(yīng)用程序
- Python使用Flask框架同時(shí)上傳多個(gè)文件的方法
- Python的Flask框架的簡(jiǎn)介和安裝方法
相關(guān)文章
Django實(shí)現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法
這篇文章主要介紹了Django實(shí)現(xiàn)靜態(tài)文件緩存到云服務(wù)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08對(duì)Python信號(hào)處理模塊signal詳解
今天小編就為大家分享一篇對(duì)Python信號(hào)處理模塊signal詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python定時(shí)任務(wù)sched庫(kù)用法簡(jiǎn)單實(shí)例
sched可用于定時(shí)任務(wù),唯一需要注意的就是,這些任務(wù)在一個(gè)線程中運(yùn)行,如果前面的任務(wù)耗時(shí)過(guò)長(zhǎng),則后面的任務(wù)將順延執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)sched庫(kù)用法的相關(guān)資料,需要的朋友可以參考下2023-01-01詳解Python如何使用Self類(lèi)型實(shí)現(xiàn)返回類(lèi)的實(shí)例對(duì)象
在 Python 中,類(lèi)方法通常會(huì)返回類(lèi)的實(shí)例對(duì)象,本文將詳細(xì)介紹如何在 Python 中使用 Self 類(lèi)型來(lái)返回類(lèi)的實(shí)例對(duì)象,并提供豐富的示例代碼幫助更好地理解,快跟隨小編一起學(xué)習(xí)起來(lái)吧2024-02-02Python 余弦相似度與皮爾遜相關(guān)系數(shù) 計(jì)算實(shí)例
今天小編就為大家分享一篇Python 余弦相似度與皮爾遜相關(guān)系數(shù) 計(jì)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python實(shí)現(xiàn)圖片滑動(dòng)式驗(yàn)證識(shí)別方法
驗(yàn)證碼作為一種自然人的機(jī)器人的判別工具,被廣泛的用于各種防止程序做自動(dòng)化的場(chǎng)景中。這篇文章主要介紹了Python實(shí)現(xiàn)圖片滑動(dòng)式驗(yàn)證識(shí)別方法,需要的朋友可以參考下2017-11-11