django - 带有redis的Django正在缓存所有页面
问题描述
我将模板缓存与 django-redis 一起使用,它可以正常工作,但是,虽然我不使用装饰器(如 cache_page、cache_control 等),但 django 会自动缓存每个加载的页面。
我使用 redis-cli 验证了这一点。这是keys *
页面加载后的输出:
1) ":1:views.decorators.cache.cache_header..11786bb66822aef24b9fe0dac22e6e4e..."
2) ":1:views.decorators.cache.cache_page..GET.11786bb66822aef24b9fe0dac22e6e4e..."
3) ":1:django.contrib.sessions.cached_db8ss2k5s9jmp42cer0fs1nd..."
我尝试在每个视图上使用 never_cache 并且它有效,但我不认为这是一个好的解决方案。有更好的方法吗?
我的配置很简单
CACHES = {
'default':
{
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://redis_ip:redis_port',
'TIMEOUT': 60
},
}
中间件.PY
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
...
'django.middleware.cache.FetchFromCacheMiddleware',
...]
谢谢大家
解决方案
从您的设置中删除UpdateCacheMiddleware
和。它们适用于每个站点的缓存,因此当您拥有这些中间件时,每个页面都会被缓存。FetchFromCacheMiddleware
MIDDLEWARE
推荐阅读
- android - 使用改造库时不调用 onResponse 方法
- winforms - 检测键组合 C# Winform
- javascript - Vue 大喊对象未定义,同时它在需要加载它的范围内
- asp.net-core - 优雅关闭:AppDomain.CurrentDomain.ProcessExit 与 appLifetime.ApplicationStopping.Register 有什么区别?
- javascript - Chrome:某些图表出现错误时,将 Highcharts 导出为 svg 格式
- javascript - Javascript 和数据库,特殊符号无法正确显示
- c - 如何将字符串切割成结构数组[C]?
- html - "-" 登录 svg 路径
- google-app-engine - 自动将 Github 提交到 Google AppEngine 版本
- wordpress - Woocommerce 中的邮政编码