Spring Data Rest — кэширование

Как включить кэширование с помощью Spring Data Rest?

Причина в том, что список репозиториев и методы поиска не изменятся после запуска приложения. Кроме того, если данные, лежащие в основе остальных API, изменяются только через остальные API, это также дает возможность включить кэширование данных.

Я считаю, что некоторый уровень кэширования происходит в среде REST API, и было бы идеально, если бы кэширование происходило на этапе окончательного ответа, т. Е. Ответа json (чтобы избежать накладных расходов на сортировку объектов в json)

Мысли/комментарии?


person Stackee007    schedule 21.08.2013    source источник


Ответы (1)


Самый простой способ реализовать это на уровне репозитория — использовать Spring @Cacheable, как это можно увидеть в Проект Spring Data JPA Examples.

Другой вариант — использовать HTTP-кэширование, используя, например, настройки Apache HTTPD или Varnish.

person Oliver Drotbohm    schedule 21.08.2013
comment
Кэширование репозитория, с которым я согласен. Однако я немного обеспокоен включением HTTP-кеширования, когда в сценарии, когда приложение обновляет свой кеш через какой-либо триггер (внутренний или внешний), и у нас нет контроля, чтобы сделать недействительным HTTP-кэширование. - person Stackee007; 26.08.2013
comment
Я вижу заголовок ETags в фрагментах кода из документации по весенним данным. Не уверен, является ли это функцией API для хранения данных или функцией остальной оболочки. В любом случае какие-либо указатели, чтобы понять реализацию? - person Stackee007; 26.08.2013
comment
Re: HTTP-кэширование. Настройка кешей полностью зависит от вашего домена, но да, это требует тщательного обдумывания и правильной настройки. Здесь нет рекомендаций по полкам. Re: ETags - они обычно реализуются фильтром сервлета или HandlerInterceptor. Быстрое решение OOTB — это ShallowEtagHeaderFilter, но для него все равно потребуется вызывать бэкэнд-логику, поскольку он сравнивает только хэши контента, который должен быть отрисован. - person Oliver Drotbohm; 26.08.2013
comment
Спасибо @Оливер. Интересно, может ли в rest API функция перехватывать handlerInterceptor, которая будет выполнять логику, аналогичную ShallowEtagHeaderFilter, но до того, как контент будет визуализирован, и по-прежнему будет соблюдать настройки Джексона при рендеринге контента. Проверка более hashcode() функций с учетом настроек Джексона. Это может быть немного более эффективным, на мой взгляд. Мысли? - person Stackee007; 26.08.2013
comment
Похоже, ссылка не работает и теперь должна указывать на github.com/spring-projects/spring- примеры данных. - person ILya Cyclone; 19.01.2019
comment
Исправлена ​​битая ссылка - person aboger; 09.04.2019