Кэширование фрагментов шаблона Django

Опубликовал: Monday, February 13, 2024 в категории Django | Пока нет комментариев

Если необходим еще более точный контроль над кэшированием, можно воспользоваться тегом cache и с его помощью организовать кэширование фрагментов шаблона. Чтобы открыть шаблону доступ к этому тегу, поместите в начале шаблона директиву {% load cache %}.

Шаблонный тег {% cache %} кэширует содержимое блока на указанное время. Он принимает по меньшей мере два аргумента: время хранения в кэше в секундах и имя фрагмента. Например:

{% load cache %} {% cache 500 sidebar %} .. боковая панель .. {% endcache %}

Иногда бывает необходимо кэшировать несколько вариантов фрагмента в зависимости от динамических данных внутри него. Например, в предыдущем примере содержимое боковой панели может отличаться для каждого посетителя сайта. В этом случае нужно передать шаблонному тегу {% cache %} дополнительные аргументы, уникально идентифицирующие фрагмент:

{% load cache %>

{% cache 500 sidebar request.user.username %}

.. боковая панель для аутентифицированного пользователя .. {% endcache %}

Ничто не мешает задавать несколько аргументов для идентификации фрагмента. Для этого нужно лишь передать тегу {% cache %} столько аргументов, сколько необходимо.

Время хранения в кэше может быть шаблонной переменной; главное, чтобы ее значением было целое число. Так, если допустить, что шаблонная переменная my_timeout имеет значение 600, то следующие два примера будут эквивалентны:

{% cache 600 sidebar %} … {% endcache %} {% cache my_timeout sidebar %} … {% endcache %}

Такой подход позволит избежать повторения в шаблонах. Срок хранения можно определить в одном месте, в некоторой переменной, а затем передавать эту переменную разным шаблонам.

Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *