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注册为回调。
添加回答
举报