[英]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 = None
或CACHES['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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.