2011-09-29 184 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',}