【发布时间】:2012-12-07 06:51:16
【问题描述】:
我在 django 中的缓存出现了一些 weeeeeeird 行为。如果我刷新页面,我会一遍又一遍地得到相同的值(这是一个应该在每次视图被点击时递增的 int)。但是,如果我使用相同的用户名/密码登录另一个浏览器,我会看到一个递增的数字,但在我再次登录之前它不会递增。我也从未注销,只是打开页面并从另一个浏览器登录。
编辑:每次我更改网址时它也会增加(例如,添加斜线以保持在同一视图中)浏览器缓存应该被禁用。
编辑 2: 现在超级很奇怪:当我在视图中添加 @never_cache 装饰器后在另一个浏览器中打开一个新页面时,它开始在每次刷新时工作,但是当我切换回 apache/wsgi 时,它再次停止工作(是的,我重新启动了 apache)。
编辑 3: 现在随机开始在 apache 下工作...但是在 chrome 中,如果我将 url 设置为具有尾随 /,它会回到 x 刷新之前的数字。但是,如果我用尾随/ 刷新铬,它会不断增加。这是浏览器还是 apache 缓存?
查看代码:
from django.core.cache import cache
if cache.get('counter') != None:#0 needs to let this pass
cache.incr('counter')
else:
cache.set('counter', 0)
return HttpResponse(cache.get('counter'))
相关设置:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware', #cache middleware
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',) #cache middleware
CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
CACHES = {'default':{
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211', #this is the default port for memcache
'TIMEOUT': '1800' #30 Minutes
}
}
如果有任何关于我的问题的更多信息的请求,我将密切关注此问题,因此 cmets 将很快得到答复。
【问题讨论】:
标签: python django caching memcached wsgi