Учебники

TurboGears — Кэширование

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

Кеширование целых страниц

Он работает на уровне протокола HTTP, чтобы избежать полных запросов к серверу, поскольку браузер пользователя или промежуточный прокси-сервер (например, Squid) перехватывают запрос и возвращают кэшированную копию файла.

Кэширование на уровне приложения

Это работает на сервере приложений, чтобы кэшировать вычисленные значения, часто результаты сложных запросов к базе данных, так что будущие запросы могут избежать необходимости пересчитывать значения. Для веб-приложений кэширование на уровне приложений обеспечивает гибкий способ кэширования результатов сложных запросов, так что общая загрузка данного метода контроллера может быть уменьшена до нескольких пользовательских или конкретных запросов и накладных расходов на рендеринг шаблона. ,

Кэширование на уровне приложения

Как упоминалось ранее, проект «быстрого запуска» TurboGears настроен на включение пакета Beaker для поддержки кэширования. Beaker поддерживает следующие бэкэнды, используемые для хранения кеша:

  • память — используется для хранения на процесс. Это очень быстро.

  • файловая система — для каждого процесса хранения, а также многопроцессорные.

  • База данных DBM — для каждого процесса, многопроцессная, довольно быстрая.

  • База данных SQLAlchemy — хранилище для каждой базы данных на сервере. Более медленный по сравнению с приведенными выше вариантами.

  • Memcached — многосерверный кеш на основе памяти.

память — используется для хранения на процесс. Это очень быстро.

файловая система — для каждого процесса хранения, а также многопроцессорные.

База данных DBM — для каждого процесса, многопроцессная, довольно быстрая.

База данных SQLAlchemy — хранилище для каждой базы данных на сервере. Более медленный по сравнению с приведенными выше вариантами.

Memcached — многосерверный кеш на основе памяти.

Кэширование контроллера

Для быстрого кэширования контроллера доступен декоратор cached () . Все тело контроллера кэшируется в зависимости от различных параметров запроса. Определение декоратора tg.decorators.cached () следующее

tg.decorators.cached(key, expire, type, 
   query-args, cache_headers, invalidate_on_startup, cache_response)

Описание параметров выглядит следующим образом —

Sr.No. Параметры и описание
1

ключ

Определяет параметры контроллера, используемые для генерации ключа кэша.

2

истекать

Время в секундах до истечения срока действия кэша. По умолчанию «никогда».

3

Тип

dbm, память, файл, memcached или None.

4

cache_headers

Кортеж имен заголовков, указывающих заголовки ответа.

5

invalidate_on_startup

Если True, кеш становится недействительным каждый раз, когда приложение запускается или перезапускается.

6

cache_response

ответ должен быть кэширован или нет, по умолчанию True.

ключ

Определяет параметры контроллера, используемые для генерации ключа кэша.

истекать

Время в секундах до истечения срока действия кэша. По умолчанию «никогда».

Тип

dbm, память, файл, memcached или None.

cache_headers

Кортеж имен заголовков, указывающих заголовки ответа.

invalidate_on_startup

Если True, кеш становится недействительным каждый раз, когда приложение запускается или перезапускается.

cache_response

ответ должен быть кэширован или нет, по умолчанию True.

Ниже приведен пример кэширования контроллера:

@cached(expire = 100, type = 'memory')
@expose()
def simple(self):
   return "This is a cached controller!"

Кэширование на уровне шаблона

Механизм шаблонов Genshi извлекает шаблон из кэша, если его содержимое не изменилось. Размер этого кэша по умолчанию — 25. По умолчанию автоматическая перезагрузка шаблонов имеет значение true. Чтобы повысить производительность, в app_cfg.py можно сделать следующие настройки:

[app:main]
genshi.max_cache_size = 100
auto_reload_templates = false

Чтобы кэшировать шаблон, вам просто нужно вернуть параметр tg_cache из контроллера, который отображает кэшированный шаблон.

Tg_cache — это словарь, который принимает следующие ключи:

  • ключ — ключ кеша. По умолчанию: нет.

  • expire — как долго кэш должен оставаться в живых. По умолчанию: никогда не истекает

  • тип — память, дбм, memcached. По умолчанию: дБм.

ключ — ключ кеша. По умолчанию: нет.

expire — как долго кэш должен оставаться в живых. По умолчанию: никогда не истекает

тип — память, дбм, memcached. По умолчанию: дБм.

Следующий пример иллюстрирует кеширование шаблона: