Подтвердить что ты не робот

Временное отключение кэширования Django

Как отключить кэширование Django на основе каждого заказа?

Назад до Django 1.3, я могу отключить кеширование для моей локальной проверки разработки, указав CACHE_BACKEND = None в файле settings_local.py, импортированном параметром settings.py. Параметры settings_local.py были проигнорированы SVN, поэтому я всегда мог убедиться, что моя локальная среда не кэширована, но не нужно беспокоиться об изменении параметров кэша в settings.py.

Теперь, когда Django 1.3 и новая структура CACHES = {...}, настройка CACHES = None или CACHES['default']['BACKEND'] = None заставляет Django задыхаться, а установка CACHES = {} по-прежнему позволяет базовое кэширование.

4b9b3361

Ответ 1

https://docs.djangoproject.com/en/1.3/topics/cache/

Dummy Caching (для разработки) - это на самом деле не кеш, поэтому вы можете использовать его на стороне разработки.

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

Ответ 2

Я использую это в своих настройках, поэтому он немного более гибкий, если я хочу проверить использование развернутого кеширования (в этом случае 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',
        }
}

Ответ 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',}

Ответ 4

Для этой цели вы можете использовать бэкэнд "dummy". Django поставляется с кэшем "dummy", который фактически не кэшируется - он просто реализует интерфейс кэша, ничего не делая.

Вот старый стиль и новый стиль форматов.

  • старый стиль

    Чтобы активировать фиктивное кэширование, установите CACHE_BACKEND следующим образом:

    CACHE_BACKEND = 'dummy://'

  • новый стиль

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