真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Django內(nèi)置的緩存API-創(chuàng)新互聯(lián)

小編給大家分享一下如何使用Django內(nèi)置的緩存API,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到定南網(wǎng)站設(shè)計(jì)與定南網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋定南地區(qū)。

為什么要使用緩存?

一個(gè)動(dòng)態(tài)網(wǎng)站的基本權(quán)衡點(diǎn)就是,它是動(dòng)態(tài)的。 每次用戶(hù)請(qǐng)求頁(yè)面,服務(wù)器會(huì)重新計(jì)算。從開(kāi)銷(xiāo)處理的角度來(lái)看,這比你讀取一個(gè)現(xiàn)成的標(biāo)準(zhǔn)文件的代價(jià)要昂貴的多

使用緩存,將多用戶(hù)訪問(wèn)時(shí)基本相同的數(shù)據(jù)先緩存起來(lái);這樣當(dāng)用戶(hù)訪問(wèn)頁(yè)面的時(shí)候,不需要重新計(jì)算數(shù)據(jù),而是直接從緩存里讀取,避免性能上的開(kāi)銷(xiāo)。

使用Redis數(shù)據(jù)庫(kù)

使用redis數(shù)據(jù)庫(kù)存儲(chǔ)緩存,首先redis是key-value類(lèi)型的數(shù)據(jù)庫(kù),NoSQL,且也是內(nèi)存型數(shù)據(jù)庫(kù),redis是將數(shù)據(jù)加載到內(nèi)存中,進(jìn)行操作,并異步將數(shù)據(jù)備份到硬盤(pán)里。而我們知道,內(nèi)存的讀取速度要比硬盤(pán)的讀取速度快,因此Redis的讀取速度要比其他文件型數(shù)據(jù)庫(kù)快很多。

配置django的緩存設(shè)置

settings.py中添加:

CACHES = {
  "default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": "redis://172.16.3.241:6379/9", //指向裝有redis的服務(wù)器IP地址:端口 /9表示使用db9
    "OPTIONS": {
      "CLIENT_CLASS": "django_redis.client.DefaultClient",
    }
  }
}

使用Django內(nèi)置的緩存API (cache)

導(dǎo)入 from django.core.cache import cache

如何使用Django內(nèi)置的緩存API

例子

在視圖類(lèi)或視圖函數(shù)中, 首先先別急著計(jì)算頁(yè)面數(shù)據(jù);而是先向緩存讀取該頁(yè)面的數(shù)據(jù);若返回一個(gè) None;說(shuō)明沒(méi)有緩存或緩存的數(shù)據(jù)已經(jīng)過(guò)期;此時(shí)才需要進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)等計(jì)算服務(wù)

并將更新后的數(shù)據(jù)寫(xiě)入緩存中,自始至終同一頁(yè)面都統(tǒng)一使用一個(gè) key進(jìn)行存取或刪除;

# 緩存的設(shè)置與獲取
偽代碼:

content= cache.get(‘index_data')

if content is None:

  查詢(xún)數(shù)據(jù)等

  cache.set(‘index_data',content,timeout) # 設(shè)置緩存

# 渲染頁(yè)面

緩存設(shè)置了過(guò)期時(shí)間timeout,單位為秒,當(dāng)?shù)竭_(dá)過(guò)期時(shí)間之后,該緩存的數(shù)據(jù)將不會(huì)被使用,以此來(lái)確保緩存數(shù)據(jù)不會(huì)一直都是同一份。

但假如我設(shè)定timeout為3600,即60分鐘,那么在60分鐘內(nèi),如網(wǎng)頁(yè)的數(shù)據(jù)被更新了,而用戶(hù)訪問(wèn)時(shí)只能顯示舊的頁(yè)面數(shù)據(jù),因此為了保證緩存的時(shí)效性,

可以在數(shù)據(jù)更改時(shí)刪除舊緩存。

如在django自帶的管理頁(yè)面中,當(dāng)模型發(fā)生修改時(shí),會(huì)默認(rèn)調(diào)用admin.ModelAdmin的save_model 或 delete_model 方法。因此,繼承并重寫(xiě)該方法,并在里面添加

刪除緩存的代碼,則網(wǎng)站管理員通過(guò)自帶管理頁(yè)面修改數(shù)據(jù)時(shí),舊的頁(yè)面緩存會(huì)被清除

如:

class BaseModel(admin.ModelAdmin):
  '''
  繼承admin.ModelAdmin
  重寫(xiě)save_model / delete_model 方法
  '''

  def save_model(self, request, obj, form, change):

    super().save_model(request,obj,form,change)
    
    # 刪除首頁(yè)緩存
    cache.delete('index_data')
    # 刪除類(lèi)型和新品推薦的緩存
    cache.delete('types_and_newsku')

  def delete_model(self, request, obj):

    super().delete_model(request,obj)
  
    #刪除首頁(yè)緩存
    cache.delete('index_data')
    # 刪除類(lèi)型和新品推薦的緩存
    cache.delete('types_and_newsku')

以上是“如何使用Django內(nèi)置的緩存API”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前題目:如何使用Django內(nèi)置的緩存API-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/dppdoo.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部