Что такое кеширование шаблонов в Django и как его включить

Ответ

Кеширование шаблонов в Django — это механизм, который сохраняет скомпилированный HTML-код шаблона в памяти, чтобы избежать его повторной компиляции при каждом запросе. Это значительно снижает нагрузку на CPU и ускоряет время ответа сервера, особенно для сложных шаблонов.

Принцип работы:

  1. При первом запросе Django находит, компилирует и рендерит шаблон.
  2. Скомпилированный объект шаблона сохраняется в кеш.
  3. При последующих запросах Django немедленно достает готовый объект из кеша, пропуская этапы поиска и компиляции.

Как включить:

Для активации необходимо в settings.py обернуть стандартные загрузчики шаблонов в django.template.loaders.cached.Loader.

# settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        # APP_DIRS: True говорит Django искать шаблоны в директориях приложений
        'APP_DIRS': False, 
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            # Оборачиваем загрузчики в 'cached.Loader'
            'loaders': [
                ('django.template.loaders.cached.Loader', [
                    'django.template.loaders.filesystem.Loader',
                    'django.template.loaders.app_directories.Loader',
                ]),
            ],
        },
    },
]

Важно: Кеширование загрузчика шаблонов включается только тогда, когда DEBUG = False. В режиме разработки оно неактивно, чтобы вы сразу видели изменения в файлах шаблонов.