2011-09-29 91 views
22

如何在每个结帐的基础上禁用Django缓存?暂时禁用Django缓存

回到Django 1.3之前,我可以通过在settings.py导入的settings_local.py中指定CACHE_BACKEND = None来禁用本地开发结帐的缓存。 settings.local.py被SVN忽略,所以我总是可以确保我的本地环境没有缓存,而不必担心修改settings.py中的缓存参数。

现在,使用Django 1.3,而新CACHES = {...}结构,设定CACHES = NoneCACHES['default']['BACKEND'] = None导致的Django呛,并设置CACHES = {}似乎仍然能够基本缓存。

回答

7

我在我的设置使用,所以这是一个更灵活一点我情况下,我想测试部署缓存的使用(在这种情况下,内存缓存)

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

为了这个目的,你可以使用“虚拟”缓存后端。 Django带有一个“虚拟”缓存,实际上并不缓存 - 它只是在不做任何事情的情况下实现缓存接口。

这里是old stylenew style配置格式。

  1. 旧式

    要激活虚拟缓存,设置CACHE_BACKEND像这样:

    CACHE_BACKEND = 'dummy://'

  2. 新款

    CACHES = { 
        'default': { 
         'BACKEND': 'django.core.cache.backends.dummy.DummyCache', 
        } 
    } 
    
3

解决方案多个缓存,并且要禁用所有的人:

如果要禁用一些缓存
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',}