带有 redis 的 Django 正在缓存所有页面

问题描述 投票:0回答:2

我正在使用 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',
    ...]

谢谢大家

django caching redis django-redis
2个回答
1
投票

UpdateCacheMiddleware
设置中删除
FetchFromCacheMiddleware
MIDDLEWARE
。它们用于每个站点缓存,因此当您拥有这些中间件时,每个页面都会被缓存。


0
投票

我也遇到了这个问题,最简单的解决方案是删除 'django.middleware.cache.UpdateCacheMiddleware' 和 'django.middleware.cache.FetchFromCacheMiddleware' 这两人应对此行为负责。

© www.soinside.com 2019 - 2024. All rights reserved.