3 回答

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)。

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)。
添加回答
舉報(bào)