django中的奇怪缓存行为

时间:2015-06-23 18:30:06

标签: django caching django-queryset tastypie django-cache

我正在使用django的本地内存缓存(django.core.cache.backends.locmem.LocMemCache)并使用tastypie用于REST API。

我在文件CommentResource中的api.py对象中有以下代码:

def get_object_list(self, request):
    cached_comments = cache.get('comments')
    if cached_comments is not None:
        print 'got comments in cache'
        return cached_comments
    print "didn't get comments in cache"
    comments = super(CommentResource, self).get_object_list(request).order_by('-created')
    cache.set('comments', comments, 100)
    return comments

现在,当我保存新评论时,API也会返回新评论,即使它打印got comments in cache。如何缓存新评论? 一定有什么不对劲。 tastypie的dehydrate方法可能成为问题吗?

更新:我评论了dehydrate方法,但问题仍然存在。所以这可能不是问题。

更新2:即使django的querysets很懒,this answer也说

  

查询集是惰性的,这意味着它们直到调用数据库   他们被评估了。他们可以评估的一种方法是   序列化它们,这就是cache.set在幕后所做的事情。

querysets的懒惰并不能解释这种行为。

0 个答案:

没有答案