临时禁用Django缓存
如何在每次检查出代码时禁用Django的缓存?
在Django 1.3之前,我可以通过在settings.py中导入的settings_local.py文件里设置 CACHE_BACKEND = None
来禁用本地开发环境的缓存。因为settings_local.py文件不会被SVN(一个版本控制工具)记录,所以我可以确保我的本地环境不会缓存,而不需要担心修改settings.py中的缓存设置。
但是现在,使用Django 1.3和新的 CACHES = {...}
结构后,设置 CACHES = None
或 CACHES['default']['BACKEND'] = None
会导致Django出错,而设置 CACHES = {}
似乎仍然会启用基本的缓存。
5 个回答
7
在使用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()
14
我在设置中使用这个,这样如果我想测试一下已经部署的缓存(在这个例子中是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',
}
}
91
虚拟缓存(用于开发) - 这个功能实现了缓存的接口,但实际上并不进行缓存。你可以在开发或测试的网站上使用它,这样可以减少缓存的影响,也可以避免因缓存引起的错误。
最后,Django 提供了一个“虚拟”缓存,它实际上并不进行缓存——它只是实现了缓存的接口,但不执行任何操作。
这在你有一个使用了强大缓存的生产网站,但在开发或测试环境中又不想使用缓存的情况下非常有用。这样你就不需要修改代码来处理不同的情况。要启用虚拟缓存,只需像这样设置 BACKEND:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}