【发布时间】:2010-12-31 23:52:30
【问题描述】:
我正在从 Django 缓存中删除一条路径,如下所示:
from models import Graph
from django.http import HttpRequest
from django.utils.cache import get_cache_key
from django.db.models.signals import post_save
from django.core.cache import cache
def expire_page(path):
request = HttpRequest()
request.path = path
key = get_cache_key(request)
if cache.has_key(key):
cache.delete(key)
def invalidate_cache(sender, instance, **kwargs):
expire_page(instance.get_absolute_url())
post_save.connect(invalidate_cache, sender = Graph)
这可行 - 但有没有办法递归删除?我的路径如下所示:
/graph/123 /graph/123/2009-08-01/2009-10-21
每当保存 id 为“123”的图形时,两条路径的缓存都需要失效。这个可以吗?
【问题讨论】:
-
我不确定如果我理解你的问题是否正确,你的意思是你想刷新所有缓存,除了一个 id 为“123”的缓存吗?
-
我想刷新任何以'/graph/123/'开头的路径的缓存。
-
我不明白你为什么担心路径?
-
因为 Django 使用请求路径为缓存创建一个键。您认为不清楚的地方是什么?
标签: django caching path invalidation