Вы могли бы сделать эту работу, но я думаю, что есть лучшие решения.
Во-первых, если вы хотите использовать перехватчики Spring MVC, вы будете использовать метод postHandle для хранения чего-либо в вашем кеше и preHandleпроверить кеш и возможную обходную обработку.Вопрос в том, что вы храните в кеше.Вам нужно будет хранить полный ответ.Это означает, что вам нужно будет легко получить полный ответ от вашего ModelAndView в postHandle.Это может или не может быть легко, в зависимости от того, как вы делаете вещи.
Скорее всего, вам лучше использовать другой механизм кэширования все вместе.Я рекомендую кэшировать на уровне веб-сервера.Это особенно верно, если вы хотите кешировать на уровне перехватчика, так как он находится «рядом» с веб-сервером, и я не вижу никакой выгоды в повторном изобретении колеса там.Apache имеет кеш-модуль.Как и nginx.Лак тоже очень классный.
Я должен также упомянуть, что вы не должны кэшировать, пока не определите, что вам нужно (не преждевременно оптимизируйте).Это пустая трата вашего времени и усилий.Во-вторых, когда вы определили, что у вас есть проблемы с производительностью, которые необходимо устранить (и кэширование - это правильное решение), вам следует кэшировать правильные данные в нужном месте.
Теперь, скажем, выопределили, что у вас есть проблемы с производительностью и что-то вроде кэширования является хорошим решением.Следующее, что нужно определить - это то, что можно кэшировать.Если для каждого URL вы возвращаете одни и те же данные, то лучшим вариантом будет кэширование на уровне веб-сервера (Apache, nginx, Varnish и т. Д.).
Часто бывает, что два клиентапопадет на один и тот же URL и получит разные данные.Это легче всего увидеть на таком сайте, как Facebook.Когда я вхожу, я вижу другие данные, чем видит мой друг.В этом случае вы не сможете кэшировать на уровне веб-сервера.Вам нужно будет кешировать внутри вашего приложения.Обычно это означает кэширование на уровне базы данных.