2013-09-26 2 views
1

Для оптимизации одной из веб-страниц в моем приложении мне нужно кэшировать фрагмент JSP, который был включен в основной JSP. Как использовать кеширование для фрагмента JSP? Я наткнулся на OSCache, это хороший способ сделать это? Кроме того, если у вас есть какие-либо учебники, вы можете отправить мне ссылку.Кэширование фрагментов JSP

+0

Я пытался что-то вроде этого: <с: если тест = "$ {пустой cachedFragment}"> \t \t <с: множество вар = "cachedFragment" сфера = "Приложение"> \t \t

\t \t \t < % @ включают файл = "/ checkout2/включить/inc_footer.jspf" %> \t \t
\t $ {applicationScope.cachedFragment} ... Nots уверен, что это хорошая идея. Мысли ?? – MilesToGo

ответ

1

EhCache имеет SimplePageFragmentCachingFilter для кэширования фрагментов JSP. Хотя я использовал EhCache, я еще никогда не использовал кеширование JSP. Но я полагаю, что он твердый, так как другие части библиотеки.

0

Я использую 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 объемом и 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} 

Вы можете оберните содержимое файла фрагмента JSP в такую ​​конструкцию. Но время жизни сессии - определяется по формуле (здесь 30 мин):

<session-config> 
    <session-timeout>30</session-timeout> 
</session-config> 

в вашем web.xml.

Смежные вопросы