如何在每次结帐时禁用Django缓存?
在Django 1.3之前,我可以通过在settings.py导入的settings_local.py中指定CACHE_BACKEND = None
来禁用本地开发结帐的缓存。 SVN忽略了settings_local.py,因此我总是可以确保我的本地环境没有缓存,而不必担心在settings.py中修改缓存参数。
现在,使用Django 1.3和新的CACHES = {...}结构,设置CACHES = None
或CACHES['default']['BACKEND'] = None
会导致Django窒息,设置CACHES = {}
似乎仍然启用基本缓存。
答案 0 :(得分:56)
https://docs.djangoproject.com/en/1.3/topics/cache/
虚拟缓存(用于开发) - 这实际上并不缓存,因此您可以在开发方面使用它。
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
答案 1 :(得分:9)
我在我的设置中使用它,所以它更灵活一点我想测试部署缓存的使用情况(在本例中为memcache)
TEST_MEMCACHE = False
if not DEBUG or TEST_MEMCACHE:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
else:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
答案 2 :(得分:4)
多个缓存的解决方案,并且您想要禁用所有缓存:
if True:
CACHES = {
k : {'BACKEND': 'django.core.cache.backends.dummy.DummyCache',}
for k,v in CACHES.iteritems()
}
解决方案如果要禁用某些缓存,可能有所帮助:
if True:
disable_names = [ 'cache_name' ]
for name in disable_names:
CACHES[name] = {'BACKEND' : 'django.core.cache.backends.dummy.DummyCache',}
答案 3 :(得分:2)
为此,您可以使用“虚拟”缓存后端。 Django带有一个“虚拟”缓存,实际上并不缓存 - 它只是实现缓存接口而不做任何事情。
旧式
要激活虚拟缓存,请按以下方式设置CACHE_BACKEND:
CACHE_BACKEND = 'dummy://'
新款式
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
答案 4 :(得分:1)
虽然使用DRF,但在某些视图上,我将启用使用django.views.decorators.cache.cache_page
进行缓存。接受的答案对我不起作用,我诉诸于在拆除时清除缓存
from django.core.cache import cache
from rest_framework.test import APITestCase
class SomeTestCase(APITestCase):
def tearDown(self):
cache.clear()