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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...