微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django身份验证中间件干扰站点范围的缓存

如何解决Django身份验证中间件干扰站点范围的缓存

我正在尝试使django的整个站点范围的缓存正常工作。我的settings.py:

MIDDLEWARE = [
    # 'debug_toolbar.middleware.DebugToolbarMiddleware','django.middleware.cache.UpdateCacheMiddleware','django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','django.middleware.cache.FetchFromCacheMiddleware',]

CACHE_MIDDLEWARE_SECONDS = 60
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache','LOCATION': os.path.join(BASE_DIR,'cache'),}
}

我也尝试过使用memcached后端进行此操作,但是很难查看是否正在生成缓存并具有完全相同的行为。

我正在测试是否通过简单地将{{request.user}}和{%Now'H:i:s'%}时间戳放入模板中来进行缓存。当我在两种不同的浏览器中打开此页面(以便获得不同的会话)时,两个用户都是AnonymousUser,但是时间戳有所不同,这表明我没有在匿名用户之间进行缓存。在每个会话中,重新加载页面将获得与该会话的第一次加载相同的时间戳,因此缓存可以正常工作,但是它为访问该网站的每个用户都创建了一个新的缓存,这实质上破坏了拥有一个站点的意义。完全为我缓存。

当我注释掉'django.contrib.auth.middleware.AuthenticationMiddleware'并重复实验时,该页面将在所有会话之间进行缓存,因此这是问题所在,但是我需要用于站点管理的auth中间件。

我期望并希望实现的行为是,所有匿名用户都将获得相同的缓存页面,并且每个登录用户都将获得自己的缓存。关于如何实现这一目标的任何想法?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。