淺談django三種緩存模式的使用及注意點(diǎn)
django是動(dòng)態(tài)網(wǎng)頁(yè),一般來(lái)說(shuō)需要實(shí)時(shí)的生成訪(fǎng)問(wèn)的頁(yè)面,展示給訪(fǎng)問(wèn)者,這樣,內(nèi)容可以隨時(shí)變化,也就說(shuō)請(qǐng)求到達(dá)視圖函數(shù)之后,然后進(jìn)行模板渲染,將字符串返回給用戶(hù),用戶(hù)會(huì)看到相應(yīng)的html頁(yè)面。但是如果每次請(qǐng)求都從數(shù)據(jù)庫(kù)中請(qǐng)求并獲取數(shù)據(jù),并且當(dāng)用戶(hù)并發(fā)量十分大的時(shí)候,這將服務(wù)器性能將大大受到影響。因此使用緩存能有效的解決這類(lèi)問(wèn)題。如果能將渲染后的結(jié)果放到速度更快的緩存中,每次有請(qǐng)求過(guò)來(lái),先檢查緩存中是否有對(duì)應(yīng)的資源,如果有,直接從緩存中取出來(lái)返回響應(yīng),節(jié)省取數(shù)據(jù)和渲染的時(shí)間,不僅能大大提高系統(tǒng)性能,還能提高用戶(hù)體驗(yàn)。
緩存的適合場(chǎng)景
對(duì)頁(yè)面實(shí)時(shí)性要求不高的頁(yè)面。對(duì)于大多數(shù)的購(gòu)物網(wǎng)站,短期內(nèi)商品的描述是沒(méi)有變化的,可以使用緩存。
緩存優(yōu)先級(jí)
由django的生命周期知各級(jí)緩存的優(yōu)先級(jí):中間件應(yīng)用的全局緩存>視圖函數(shù)緩存>模板渲染下的局部視圖使用緩存。
Django 緩存模式的使用(主要針對(duì)RestFul設(shè)計(jì)模式的項(xiàng)目)
有三種模式:
全站使用緩存模式(整個(gè)項(xiàng)目每個(gè)接口都會(huì)使用緩存,缺點(diǎn):所以接口都無(wú)法實(shí)時(shí)性獲取數(shù)據(jù)) 單獨(dú)視圖緩存模式(單個(gè)接口使用緩存) 局部視圖緩存模式
第一種:實(shí)現(xiàn)方式:
必須在 settings中設(shè)置 緩存中間件
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', 。。。其他中間件。。。 'django.middleware.cache.FetchFromCacheMiddleware', ]
但是伴隨的缺點(diǎn)就是 沒(méi)有設(shè)置 緩存的接口默認(rèn)都會(huì)有600秒的緩存,如下
無(wú)論清緩存還是換瀏覽器,因?yàn)榫彺娑际欠旁诜?wù)端的。
這就導(dǎo)致 那些不需要設(shè)置緩存,要求數(shù)據(jù)實(shí)時(shí)性較高的接口無(wú)法及時(shí)返回最新數(shù)據(jù)。
所以:
如果需要使用
from django.views.decorators.cache import cache_page, cache_control from django.views.decorators.vary import vary_on_headers
@cache_control,@vary_on_headers,@vary_on_cookie
這些裝飾器,就必須需要 緩存中間件,但是這樣會(huì)導(dǎo)致其他接口都會(huì)有緩存600秒,需要慎重考慮使用
第二種:
from django.views.decorators.cache import cache_page @cache_page(10) def cac(request): .......
這種方式只針對(duì)一個(gè)接口使用緩存(個(gè)人傾向于使用此方式)
第三種:
涉及到模板的使用(具體沒(méi)有研究過(guò)):
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python3 掃描庫(kù)文件并獲取版本號(hào)信息的操作方法
在 C/C++ 開(kāi)發(fā)中使用了第三方庫(kù),具體說(shuō)是 .a, .lib, .dll 等文件,想通過(guò) Python 查詢(xún)出這些文件中的版本號(hào)信息,下面小編給大家?guī)?lái)了Python3中掃描庫(kù)文件并獲取版本號(hào)信息的知識(shí),需要的朋友可以參考下2023-05-05python的django寫(xiě)頁(yè)面上傳文件及遇到的問(wèn)題小結(jié)
這篇文章主要介紹了python的django寫(xiě)頁(yè)面上傳文件以及遇到的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例
今天小編就為大家分享一篇Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07python實(shí)現(xiàn)修改固定模式的字符串內(nèi)容操作示例
這篇文章主要介紹了python實(shí)現(xiàn)修改固定模式的字符串內(nèi)容操作,結(jié)合實(shí)例形式詳細(xì)分析了Python修改固定模式字符串原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-12-12Python 如何給圖像分類(lèi)(圖像識(shí)別模型構(gòu)建)
這篇文章主要介紹了Python 教你如何給圖像分類(lèi),今天的文章主要是講圖像識(shí)別模型如何構(gòu)建,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06Python?socket之TCP通信及下載文件的實(shí)現(xiàn)
本文主要介紹了Python?socket之TCP通信及下載文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python中的線(xiàn)程操作模塊(oncurrent)
這篇文章介紹了Python中的線(xiàn)程操作模塊(oncurrent),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Tensorflow設(shè)置顯存自適應(yīng),顯存比例的操作
今天小編就為大家分享一篇Tensorflow設(shè)置顯存自適應(yīng),顯存比例的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02