Временное отключение кэширования 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 = {}
по-прежнему позволяет базовое кэширование.
Ответы
Ответ 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',
}
}