J'utilise session
possibilités de par la mise en cache du menu utilisateur:
<c:if test="${empty JSPCACHE_menu}">
<c:set var="JSPCACHE_menu" scope="session">
<ul id="user-menu">...</ul>
</c:set>
</c:if>
${JSPCACHE_menu}
Avec application
portée et c:if
contrôles que vous pouvez mettre en cache les valeurs entre tous les utilisateurs (par exemple les taux de change):
<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}
La question est un peu vague. Évidemment, ce que vous cachez n'a pas besoin d'être recalculé alors que les données mises en cache qui sont invalides (périmées) représentent un gaspillage d'espace - le compromis classique espace/temps. Les requêtes de base de données sont-elles plus chères que le rendu? Probablement, mais seule la mesure peut vous le dire avec certitude. – msw
En plus du compromis espace/temps, il est souvent très difficile de savoir si les données mises en cache sont toujours valides ou non. – Thilo