使用Django的低级缓存

使用Django的低级缓存,django,caching,Django,Caching,与缓存整个站点或整个视图不同,我决定使用低级缓存API,只缓存一些繁重的查询 我在做这样的事情 key = ... value = cache.get(key) if value is None: value = ... cache.set(key, value, CACHE_TIMEOUT) 它几乎和预期的一样有效(问题01:有更好的方法吗?, 但是,如果我将CACHE\u TIMEOUT设置为一个大值(86400:数据库每天更新一次),看起来CACHE\u TIMEOUT

与缓存整个站点或整个视图不同,我决定使用低级缓存API,只缓存一些繁重的查询

我在做这样的事情

key = ...
value = cache.get(key)
if value is None:
    value = ... 
    cache.set(key, value, CACHE_TIMEOUT)
它几乎和预期的一样有效(问题01:有更好的方法吗?,
但是,如果我将
CACHE\u TIMEOUT
设置为一个大值(
86400
:数据库每天更新一次),
看起来
CACHE\u TIMEOUT
被其他内容覆盖,该值被缓存几分钟

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

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

我不知道您使用的是哪个缓存后端,也不知道您是如何设置超时的,但可能您做错了(从以下方面):

每个缓存后端都可以接受参数。他们屈服了 上的查询字符串样式 缓存\u后端设置。有效论点 详情如下:

  • 超时:缓存使用的默认超时(秒)。这 参数默认为300秒(5秒)

CACHE\u后端=”memcached://127.0.0.1:11211/?timeout=60

cache.set()中传递的值
覆盖了这一点。我正在尝试使用memcached。你认为我应该尝试其他方法吗?我认为你应该监控缓存统计信息,看看需要更改什么。谢谢。我发现了问题……我使用的是低级API,没有禁用整个站点缓存(3个中间件类).完全正确:缓存统计数据知道真相!