0

我正在为我的 django 项目中的某些模型缓存一堆查询。似乎缓存本身正在工作,但是当我想通过添加新模型对象来进行测试时,我注意到在创建模型之后,查询列表已更新为包含新模型,这应该是不正确的,因为缓存超时设置为 1 unix 小时。

我们不是应该等1个小时才能看到新模型吗?这是代码:

def home(request, filterBy = 'all', sortBy = 'popularity'):
    if not cache.get('home' + filterBy + sortBy):
        models = Model.objects.with_rankings(filterBy, sortBy, request)
        cache.set('home' + filterBy + sortBy, models, 3600) # 1 hour
    else:
        models = cache.get('home' + filterBy + sortBy)

谢谢你。

4

1 回答 1

3

请记住,cache.get(key)如果缓存中没有值,则返回 None 而不是 False 或其他任何值。而且您不是在检查它,您只是在检查返回值是否为真。Empty QuerySet 也是错误的,可能是您的情况。

它应该是(也是一个缓存少):

def home(request, filterBy = 'all', sortBy = 'popularity'):
    models = cache.get('home' + filterBy + sortBy)
    if models is None:
        models = Model.objects.with_rankings(filterBy, sortBy, request)
        cache.set('home' + filterBy + sortBy, models, 3600) # 1 hour
于 2012-09-28T15:55:09.973 回答