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

时间:2019-06-03 14:20:37

标签: django caching redis django-redis

我正在使用带有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
        },
}

MIDDLEWARE.PY

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
     ...
    'django.middleware.cache.FetchFromCacheMiddleware',
    ...]

感谢所有人

1 个答案:

答案 0 :(得分:1)

从您的Link设置中删除UpdateCacheMiddlewareFetchFromCacheMiddleware。它们是为per-site caching设计的,因此拥有这些中间件时,每个页面都会被缓存。