Хостинг Django от «Джино»
Table of contents

Кэширование отдельного сайта

После того, как вы указали значение для CACHE_BACKEND, самым простым способом использования кэша будет кэширование всего сайта. Это означает, что каждая страница, которая не имеет параметров GET или POST, будет помещена в кэш на указанное количество времени при первом обращении к ней.

Для активации этого способа кэширования необходимо добавить django.middleware.cache.CacheMiddleware в параметр MIDDLEWARE_CLASSES, как показано на примере:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.CacheMiddleware',
    'django.middleware.common.CommonMiddleware',
)

Замечание

Порядок указания значений в параметре MIDDLEWARE_CLASSES имеет значение. Обратитесь к секции «Порядок в MIDDLEWARE_CLASSES», описанной в этой главе далее.

Затем добавьте следующие обязательные параметры в файл конфигурации Django:

  • CACHE_MIDDLEWARE_SECONDS: Количество секунд в течении которых страница должна храниться в кэше.

  • CACHE_MIDDLEWARE_KEY_PREFIX: Если кэш распределён между несколькими сайтами под управлением одной инсталляции Django, назначьте этому параметру имя сайта или любую другую строку, которая будет уникальна для этого экземпляра Django, это поможет избежать коллизии ключей. Можете оставить значение пустым, если вас это не волнует.

Система кэширует каждую страницу, которая не содержит GET или POST параметров. Таким образом, если пользователь запрашивает страницу и передаёт в запросе параметры GET или POST, система не пытается получить закэшированную версию страницы. Если вы намереваетесь использовать данный способ кэширования, следует помнить эту особенность при проектировании своего приложения.

Механизм кэширования поддерживает ещё один параметр — CACHE_MIDDLEWARE_ANONYMOUS_ONLY. Если вы определили этот параметр и назначили ему значение True, то в этом случае механизм будет производить кэширование только анонимных запросов. Такое поведение позволяет просто и эффективно отключить кэширование для любых пользовательских страниц, таких как интерфейс администратора Django. Следует отметить, что если вы используете CACHE_MIDDLEWARE_ANONYMOUS_ONLY, вам следует удостовериться, что вы активировали AuthenticationMiddleware и что оно указано до CacheMiddleware в параметре MIDDLEWARE_CLASSES.

Наконец, следует отметить, что CacheMiddleware автоматически устанавливает несколько заголовков в каждом HttpResponse:

  • Заголовок Last-Modified указывает дату и время когда была запрошена новая (некэшированная) версия страницы.

  • Заголовок Expires указывает дату и время плюс значение CACHE_MIDDLEWARE_SECONDS до окончания выдачи закэшированной версии страницы.

  • Заголовок Cache-Control определяет максимальный срок для страницы, относительно параметра CACHE_MIDDLEWARE_SECONDS.


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5