第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使Django中的視圖緩存過(guò)期?

使Django中的視圖緩存過(guò)期?

守著星空守著你 2019-09-24 11:00:02
該@cache_page decorator真棒。但是對(duì)于我的博客,我希望將頁(yè)面保留在緩存中,直到有人發(fā)表評(píng)論。這聽起來(lái)像是個(gè)好主意,因?yàn)槿藗兒苌僭u(píng)論,因此將頁(yè)面保留在內(nèi)存緩存中,而沒(méi)人評(píng)論會(huì)很好。我以為有人以前一定有這個(gè)問(wèn)題?這與每個(gè)URL的緩存不同。因此,我正在考慮的解決方案是:@cache_page( 60 * 15, "blog" );def blog( request ) ...然后,我將保留用于博客視圖的所有緩存鍵的列表,然后使“博客”緩存空間過(guò)期。但是我對(duì)Django并沒(méi)有超級(jí)的經(jīng)驗(yàn),所以我想知道是否有人知道這樣做的更好方法?
查看完整描述

3 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

我為這種情況編寫了Django-groupcache(您可以在此處下載代碼)。就您而言,您可以這樣寫:


from groupcache.decorators import cache_tagged_page


@cache_tagged_page("blog", 60 * 15)

def blog(request):

    ...

從那里,您可以稍后再做:


from groupcache.utils import uncache_from_tag


# Uncache all view responses tagged as "blog"

uncache_from_tag("blog") 

還要看看cache_page_against_model():涉及的更多一些,但是它將允許您根據(jù)模型實(shí)體的更改自動(dòng)取消緩存響應(yīng)。


查看完整回答
反對(duì) 回復(fù) 2019-09-24
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用最新版本的Django(> = 2.0),您正在尋找的東西很容易實(shí)現(xiàn):


from django.utils.cache import learn_cache_key

from django.core.cache import cache

from django.views.decorators.cache import cache_page


keys = set()


@cache_page( 60 * 15, "blog" );

def blog( request ):

    response = render(request, 'template')

    keys.add(learn_cache_key(request, response)

    return response


def invalidate_cache()

    cache.delete_many(keys)

當(dāng)有人通過(guò)pre_save信號(hào)更新博客中的帖子時(shí),您可以將invalidate_cache注冊(cè)為回調(diào)。


查看完整回答
反對(duì) 回復(fù) 2019-09-24
  • 3 回答
  • 0 關(guān)注
  • 712 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)