使用Django进行低级缓存

时间:2010-12-14 16:43:01

标签: django caching

我决定只使用低级缓存API缓存一些繁重的查询,而不是缓存整个网站或整个视图。

我正在做这样的事情

key = ...
value = cache.get(key)
if value is None:
    value = ... 
    cache.set(key, value, CACHE_TIMEOUT)

按预期工作几乎问题01:有更好的方法吗?),
但是如果我将CACHE_TIMEOUT设置为一个较大的值(86400:db每天更新一次),则看起来CACHE_TIMEOUT被其他内容覆盖,并且值缓存只需几分钟......

问题02:)我做错了什么? 我的超时时间太长了吗? 或者也许我在缓存太多信息? (value包含约500-1000个对象,并在50-60个不同的页面/键中进行评估)

2 个答案:

答案 0 :(得分:1)

某些缓存服务器(例如memcached)是有损的,较新的项目会强制旧项目退出缓存。监控缓存统计信息并适当修改配置和/或行为。

答案 1 :(得分:0)

我不知道你正在使用哪个缓存后端,也不知道你是如何设置超时的,但也许你做错了(来自django documentation on caching):

  
    

每个缓存后端都可以使用参数。他们被给了     查询字符串样式     CACHE_BACKEND设置。有效参数     如下:

  
  • timeout:用于缓存的默认超时(以秒为单位)。这个 参数默认为300秒(5
  • ...

CACHE_BACKEND = "memcached://127.0.0.1:11211/?timeout=60