3 回答

TA貢獻1807條經驗 獲得超9個贊
我為這種情況編寫了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():涉及的更多一些,但是它將允許您根據模型實體的更改自動取消緩存響應。

TA貢獻1943條經驗 獲得超7個贊
使用最新版本的Django(> = 2.0),您正在尋找的東西很容易實現:
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)
當有人通過pre_save信號更新博客中的帖子時,您可以將invalidate_cache注冊為回調。
添加回答
舉報