我正在使用站点范围的缓存内存缓存 http://en.wikipedia.org/wiki/Memcached作为后端。当底层数据库对象更改时,我想使缓存中的页面无效。
如果页面名称发生更改,那么我将使整个缓存无效(因为它会影响每个页面上的导航。虽然笨拙,但足以满足我的需求。
如果只是页面内容发生变化,那么我想使该页面的缓存无效。
是否有捷径可寻?
我没有用 Django 做过很多缓存,但我认为你想要的是signals http://docs.djangoproject.com/en/dev/topics/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)
这应该在更新时正确地从缓存中删除该项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)