当前位置:  开发笔记 > 编程语言 > 正文

从Django的缓存中删除特定项目?

如何解决《从Django的缓存中删除特定项目?》经验,为你挑选了1个好方法。

我正在使用memcached作为后端的站点范围缓存.我想在底层数据库对象更改时使缓存中的页面无效.

如果页面名称发生更改,那么我将使整个缓存无效(因为它会影响每个页面上的导航.笨拙但足以满足我的需求.

如果只是页面内容发生了变化,那么我想使该页面的缓存无效.

是否有捷径可寻?



1> tghw..:

我没有用Django做很多缓存,但我想你想要的是什么signals.

您可以post_save在基础对象上设置信号,并使回调函数使缓存中的该页无效.

from django.core.signals import post_save
from django.core.cache import cache

def invalidate_cache(sender, **kwargs):
    # invalidate cache
    cache.delete(sender.get_absolute_url()) # or any other pertinent keys

post_save.connect(invalidate_cache, sender=UnderlyingModel)

这应该在更新时正确地从缓存中删除该项.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有