Лучшие практики для кэширования результатов страниц JSP? - PullRequest
2 голосов
/ 23 марта 2010

Мое приложение имеет структуру MVC.

Достаточно ли кэшировать только те объекты модели, которые передаются в представления JSP?

Или будет ли значительное повышение производительности за счет кэширования результатов рендеринга представлений JSP?

Ответы [ 3 ]

1 голос
/ 23 марта 2010

Я не буду вдаваться в подробности. Предполагая, что вы знаете, что делаете.

Теперь, чтобы ответить на ваш вопрос просто. Мы не кешируем JSP-представления. Как обычно, мы кэшируем результаты базы данных для запросов, которые будут широко использоваться. Кстати, как вы планируете кэшировать ваши представления JSP?

0 голосов
/ 16 декабря 2014

Я использую 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}
0 голосов
/ 23 марта 2010

Вот ментальный алгоритм, который я бы использовал:

  1. Испытываете ли вы проблемы с производительностью (другими словами: ваш сайт работает медленно)? Если «нет», перейдите к шагу 6. ​​
  2. Профилируйте код, чтобы найти узкие места (либо реальный инструмент профилировщика, либо просто добавьте таймеры, которые будут измерять время, необходимое для запроса и т. д.)
  3. Найдите узкие места на основе данных, собранных на шаге 2.
  4. Попытайтесь найти алгоритмическое решение, то есть вычислить тот же результат другим способом, который требует меньше ресурсов, которые ограничивают ваше узкое место. Если вы найдете такой алгоритм, реализуйте его и перейдите к шагу 6. ​​
  5. Определите стратегию по устранению этого узкого места. Кэширование - это решение одной проблемы. На веб-сайтах часто случается, что замедление происходит из-за загрузки материала. В этом случае вы можете разместить весь свой статический контент на выделенном сервере (другой домен) и сделать так, чтобы веб-страницы определяли контент со статического сайта. Браузер откроет второе соединение со статическим сайтом, что значительно повысит производительность.
  6. Рефакторинг кода, чтобы сделать его более понятным, хорошо структурированным и менее подверженным ошибкам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...