我不确定Django
数据库缓存如何处理过期的条目,但似乎它们仍保留在数据库中。
我希望Django
在它们到期后删除它们,因为它们的大小很大并且可以有无限数量的不同密钥。
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'cache_table',
'TIMEOUT': 60 * 20,
}
}
我在过滤的对象列表上使用cache
,并且此过滤器包含数字和字符字段。
有可能吗?
答案 0 :(得分:1)
无法清除过期的条目。这是您可能不想在生产中使用数据库缓存的众多原因之一!
如果可能,应该切换到其他缓存后端(我更喜欢Redis)。如果不能,那么您还有其他选择:
如果知道要清除的缓存键,则可以使用the low-level cache API直接删除要清除的键。
您可以调整MAX_ENTRIES
和/或CULL_FREQUENCY
cache arguments以限制缓存的整体大小。
您可以直接进入数据库(可能是从后台任务或cron作业),手动运行诸如DELETE FROM cache_table WHERE expires < now()
之类的SQL(我没有测试过,但是我认为它应该可以工作)。