在Django项目中,我按如下方式设置缓存后端:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
},
'filemem': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
我正在使用filemem
来缓存特定守护程序任务的结果,而default
缓存则用于其他所有任务。
我已经读过LocMemCache
是Django在没有指定时使用的默认缓存。如果这是正确的,那么从技术上讲,只需将以下代码段添加到我的settings.py
,就应该等同于上面的代码段:
CACHES = {
'filemem': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
所以这是我的问题。这两个片段是否相同?或者,如果我要指定非默认缓存,我还必须指定default
吗?请指教。我是Django缓存的新手。
答案 0 :(得分:2)
为了在Django中使用多个缓存后端,它们都需要存在于CACHES
字典中。有几种方法可以做到这一点,但你的第二个片段不是其中之一。
你可以这样做,但我从来没有见过有人在实践中这样做:
from django.conf.global_settings import CACHES
CACHES['filemem'] = {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
通常人们会明确声明他们将使用的所有CACHE后端,如下所示:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
},
'filemem': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
但是在这个片段中,你只用filemem缓存覆盖缓存dict:
CACHES = {
'filemem': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}