Я использую session
область для кэширования меню пользователя:
<c:if test="${empty JSPCACHE_menu}">
<c:set var="JSPCACHE_menu" scope="session">
<ul id="user-menu">...</ul>
</c:set>
</c:if>
${JSPCACHE_menu}
С проверками application
scope и c:if
вы можете кэшировать значения среди всех пользователей (например, курсы валют):
<c:set var="newCurrencyTS" value="currencyService.newCurrencyTS()"/>
<c:if test="${JSPCACHE_currencyTS.time < newCurrencyTS.time}">
<c:set var="JSPCACHE_currencyWidget" scope="application">
<ul>
<c:for var="i" items="${currencyService.getActualRates()}">
<li>...<li>
</c:for>
</ul>
</c:set>
<c:set var="JSPCACHE_currencyTS" value="${newCurrencyTS}" scope="application"/>
</c:if>
${JSPCACHE_currencyWidget}