У меня есть JSP, на рендеринг которого уйдет около 8 минут. Сама логика кода не может быть сделана более эффективной (она будет часто обновляться и обновляться в основном остроконечным боссом). Я попытался обернуть его слоем кэширования, как
<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="oscache" %>
<oscache:cache time="60">
<div class="pagecontent">
..... my logic
</div>
</oscache:cache>
Это хорошо, пока 60 секунд не закончится. Следующий запрос после этого блокируется до 8 минут рендеринга снова. Мне нужен способ построить шаблон что-то вроде:
- Если в кэше нет версии динамического содержимого, запустите фактическую логику (и заполните кэш для последующих запросов)
- Если в кеше есть версия динамического содержимого с истекшим сроком действия, служит для вывода логики JSP из кеша
- Если в кеше имеется просроченная версия динамического содержимого, подайте на выход логики JSP still из кеша AND запустите логику JSP в фоновом режиме, чтобы кэш обновляется прозрачно для пользователя - избегая пользователя ждать 8 минут
Я обнаружил, что, по крайней мере, EHCache может выполнять какое-то асинхронное обновление кэша, но, к сожалению, это не относится к тегам JSP ... Также мне нужно взять 10-20 параметров для реальной логики JSP и некоторые из них должны использоваться в качестве ключа для кэширования.
Пример кода и / или указатели будут очень оценены. Мне, честно говоря, все равно, если предоставленное решение будет крайне уродливым. Я просто хочу простое 5-минутное кеширование с асинхронным обновлением кеша с учетом некоторых параметров в качестве ключа.