4

在我的 settings.py 中,我有:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'ws_cache_table',
        'TIMEOUT': '3000000',
        'OPTIONS': {
            'MAX_ENTRIES': 10000000
        }
    }
}

但如果我这样做python manage.py shell

from django.core.cache import cache
print type(cache)

我越来越:

django.core.cache.backends.locmem.LocMemCache

为什么!???现在我无法清除我的缓存...

为了证明我的配置是正确的,我可以这样做:

from django.conf import settings
conf = settings.CACHES.get('default', None)

我得到:

{'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
 'LOCATION': 'ws_cache_table',
 'OPTIONS': {'MAX_ENTRIES': 10000000},
 'TIMEOUT': '3000000'}

看起来get_cache在定义 CACHES 之前调用了方法...

4

1 回答 1

0

首先你应该记住,你local_settings.py会覆盖settings.py.

然后,您应该注意后端正在运行的缓存守护程序,因为有不同的缓存守护程序,并且根据您运行的内容,您需要相应的指定选项。

例如,对于 memcached,local_settings.py 将显示:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211'
        'CACHE_TIME': '3600',
    }
}

而对于 locmem:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
        'LOCATION': '127.0.0.1:11211'
        'TIMEOUT': 3600'
    }
}
于 2016-02-07T12:33:40.670 回答