我决定只使用低级缓存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个不同的页面/键中进行评估)
答案 0 :(得分:1)
某些缓存服务器(例如memcached)是有损的,较新的项目会强制旧项目退出缓存。监控缓存统计信息并适当修改配置和/或行为。
答案 1 :(得分:0)
我不知道你正在使用哪个缓存后端,也不知道你是如何设置超时的,但也许你做错了(来自django documentation on caching):
每个缓存后端都可以使用参数。他们被给了 查询字符串样式 CACHE_BACKEND设置。有效参数 如下:
CACHE_BACKEND = "memcached://127.0.0.1:11211/?timeout=60