繁体   English   中英

暂时禁用 Django 缓存

[英]Temporarily Disabling Django Caching

您如何在每次结帐时禁用 Django 缓存?

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

现在,使用 Django 1.3 和新的 CACHES = {...} 结构,设置CACHES = NoneCACHES['default']['BACKEND'] = None会导致 Django 窒息,而设置CACHES = {}似乎仍然启用基本缓存。

https://docs.djangoproject.com/en/dev/topics/cache/#dummy-caching-for-development

虚拟缓存(用于开发) - 这实现了缓存接口,但实际上并不缓存,因此您可以在开发/测试站点上使用它以减少缓存并防止缓存错误(如果出现错误)。

最后,Django 带有一个“虚拟”缓存,它实际上并不缓存——它只是实现了缓存接口而不做任何事情。

如果您有一个在不同地方使用重型缓存的生产站点,但在开发/测试环境中您不想缓存并且不想必须将代码更改为后者的特殊情况,这将非常有用。 要激活虚拟缓存,请像这样设置 BACKEND:

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

我在我的设置中使用它,所以它更灵活一点我想测试部署的缓存的使用情况(在这种情况下是 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',
        }
}

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

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',}

在使用 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()

为此,您可以使用“虚拟”缓存后端。 Django 带有一个实际上并不缓存的“虚拟”缓存——它只是实现了缓存接口而不做任何事情。

这里是旧样式新样式配置格式。

  1. 老款式

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

    CACHE_BACKEND = 'dummy://'

  2. 新风格

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM