Учебник Thymeleaf: Глава 16. Кэш шаблонов

в 21:03, , рубрики: java, thymeleaf

Оглавление

16 Кэш шаблонов

Thymeleaf работает благодаря набору парсеров для разметки и текста — который анализирует шаблоны в последовательности (открытый тег, текст, тег закрытия, комментарий и т. д.). И ряд процессоров по одному для каждого типа поведения, которые применяются и изменяют последовательность событий синтаксического анализа шаблона, чтобы создать ожидаемые результаты, объединив исходный шаблон с нашими данными.

Он также включает в себя — по умолчанию — кеш, в котором хранятся проанализированные шаблоны; последовательность событий, возникающих в результате чтения и анализа файлов шаблонов перед их обработкой. Это особенно полезно при работе в веб-приложении и основывается на следующих концепциях:

  • Ввод / вывод почти всегда является самой медленной частью любого приложения
  • Клонирование существующей последовательности событий в памяти всегда намного быстрее, чем чтение файла шаблона, его разбор и создание для него новой последовательности событий
  • Веб-приложения обычно имеют всего несколько десятков шаблонов
  • Файлы шаблонов имеют малый и средний размер, и они не изменяются во время работы приложения

Все это приводит к идее о том, что кэширование наиболее используемых шаблонов в веб-приложении возможно без потери больших объемов памяти, а также, что это сэкономит много времени, которое будет потрачено на операции ввода-вывода на небольшом наборе файлов которые, по сути, никогда не меняются.

И как мы можем контролировать этот кеш? Во-первых, мы узнали, что можем включить или отключить кэш в Resolver Template, даже действуя только на определенных шаблонах:

// По умолчанию true
templateResolver.setCacheable(false);
templateResolver.getCacheablePatternSpec().addPattern("/users/*");

Кроме того, мы могли бы изменить конфигурацию, установив собственный объект Cache Manager, который может быть экземпляром стандартной реализации CacheManager по умолчанию:

// По умолчанию 200
StandardCacheManager cacheManager = new StandardCacheManager();
cacheManager.setTemplateCacheMaxSize(100);
...
templateEngine.setCacheManager(cacheManager);

Обратитесь к javadoc API org.thymeleaf.cache.StandardCacheManager за дополнительной информацией о настройке кэшей.

Записи могут быть удалены вручную из кэша шаблонов:

// Полностью очистить кеш
templateEngine.clearTemplateCache();

// Очистить определенный шаблон из кеша
templateEngine.clearTemplateCacheFor("/users/userList");

Автор: Константин

Источник

Поделиться

* - обязательные к заполнению поля