我在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)
谢谢。
答案 0 :(得分:3)
请记住,如果缓存中没有值,cache.get(key)
将返回None而不是False或其他任何内容。你没有检查它,你只是检查返回值是否为真或不是。空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