python - Django Memcache session 异常行为

标签 python django caching memcached wsgi

我在 django 中的缓存中出现了一些weeeeeeird 行为。如果我刷新页面,我会一遍又一遍地得到相同的值(这是一个 int,每次点击 View 时都应该递增)。但是,如果我使用相同的用户名/密码登录另一个浏览器,我会看到一个递增的数字,但在我再次登录之前它不会递增。我也从未注销过,只是让页面保持打开状态并从另一个浏览器登录。

编辑:每次我更改 url 时它也会增加(例如添加斜杠以保持在同一 View 中)浏览器缓存应该被禁用。

编辑 2: 现在 super 很奇怪:当我在添加 @never_cache 后在另一个浏览器中打开一个新页面时,它开始在每次刷新时工作> 我认为装饰器,但是当我切换回 apache/wsgi 时,它再次停止工作(是的,我重新启动了 apache)。

编辑 3: 现在随机开始在 apache 下工作......但在 chrome 中,如果我将 url 设置为具有尾随 /,它会返回到它的数字在 x 刷新之前。但是,如果我使用尾随 / 刷新 chromium,它会不断增加。这是浏览器缓存还是 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
        }
    }

我会密切关注这个问题,以了解是否有任何关于我的问题的更多信息的请求,因此评论会很快得到答复。

Picture is all that I can use to describe the behavior.

最佳答案

在您的 MIDDLEWARE_CLASSES 中,您有 django.middleware.cache.UpdateCacheMiddlewaredjango.middleware.cache.FetchFromCacheMiddleware 用于页面缓存。这就是为什么当您使用 @never_cache 装饰器时您会看到该行为消失的原因。

您可能已经看到奇怪的斜杠/无斜杠问题,因为这些页面仍在缓存中(我不能 100% 确定装饰器是否与从缓存部分获取交互)。

如果您刷新缓存,甚至取出中间件进行测试,然后再试一次,我敢打赌您会看到预期的一致递增。

关于python - Django Memcache session 异常行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170138/

相关文章:

python - 创建自定义 Tensorflow 直方图摘要

python - html 中的 if 语句(使用 jinja2) - 我应该在哪里编辑才能使其工作?

python - Django:无法配置处理程序 'syslog'

django - 这是否有必要在 Kubernetes pod 中拥有多个进程/线程?

performance - 动态 AX 预加载行为

asp.net - "Temporary ASP.NET Files"文件夹有什么用?

python - 进入子文件夹(python)

python - 在 Z3 中,有没有办法生成未定义数量的假设来检查?

python - 配置Geodjango时,gdal 1.10和python3.3在Windows 7上不兼容

javascript - 仅对某些 css 和 javascript 文件利用浏览器缓存