除了显示用户用户名的导航栏外,我的主页对每个人都一样。
我最近使用以下方法将缓存应用到我的整个网站:
MIDDLEWARE += [
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
]
# CACHING
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': 'C:/Site/_cache',
}
}
CACHE_MIDDLEWARE_SECONDS = 21600 # 6 hours
不幸的是,该网站现在有时会缓存包含用户名的页面版本,这意味着该网站将为某些用户显示其他人的用户名。不理想。
处理此问题的最佳方法是什么?我可以从缓存中排除模板的这部分吗? 或者我可以说缓存不用于经过身份验证的用户吗?
答案 0 :(得分:1)
是的,您可以使用template fragment caching使用不同的密钥缓存部分模板。例如,要为每个经过身份验证的用户缓存单独的导航栏1小时,请按以下方式构建base.html
:
{% load cache %}
...
{% cache 3600 navbar request.user.username %}
Your username is {{ user.username }}
{% endcache %}
...
{% cache 3600 body %}
... the rest of the template which is common for all users ...
{% endcache %}