Django не использует фреймворк memcached

Я пытаюсь узнать, как работает фреймворк кеширования Django. Я установил memcached в settings.py, но время загрузки страницы не уменьшилось, а панель инструментов Django-debug-toolbar показывает 0 вызовов кеша.

Вот что я установил в settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
CACHE_MIDDLEWARE_ALIAS = "default"
CACHE_MIDDLEWARE_SECONDS  = 60

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'querycount.middleware.QueryCountMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',

]

Теперь я дважды обновил страницу с таблицей объектов. Я подумал, что во второй раз не должно быть запросов к базе данных, потому что ничего не изменилось.

введите описание изображения здесь

Что мне не хватает?


person Milano    schedule 02.01.2017    source источник
comment
Итак, вы установили бэкэнд кеширования (по какой-то причине дважды, но второй параметр больше не используется), но вы действительно что-нибудь кешируете? Если да, то где?   -  person Daniel Roseman    schedule 02.01.2017
comment
Я думал, что он будет кэшировать любые поиски в БД и другие дорогостоящие действия. Согласно заголовку Кэширование всего сайта в этом руководстве: tutorialspoint.com/django/django_caching.htm Разве нельзя заставить django кэшировать автоматически?   -  person Milano    schedule 02.01.2017
comment
Я установил @cache_control (must_revalidate = True, max_age = 3600) для одного представления, и он ничего не кэшировал.   -  person Milano    schedule 03.01.2017
comment
Пожалуйста, опубликуйте представление, к которому вы получаете доступ, здесь   -  person e4c5    schedule 03.01.2017


Ответы (1)


Вы должны поместить @cache_page декоратор в свое представление, чтобы включить кеширование для этого представления. См. https://docs.djangoproject.com/en/1.10/topics/cache/#the-per-view-cache для примеров.

person Alex Vyushkov    schedule 02.01.2017