Страница JSP кешируется, не может ее изменить, tomcat - PullRequest
5 голосов
/ 09 апреля 2010

У меня есть сервер Java, когда я что-то изменяю в коде JSP, и я снова вызываю страницу из браузера, мои изменения не отображаются, сервер возвращает старый JSP.

Кто-нибудь имеет представление, почему?

Ответы [ 3 ]

11 голосов
/ 09 апреля 2010

Jasper How-to говорит, что в conf/web.xml для вашего org.apache.jasper.servlet.JspServlet вам нужно:

  • development - Используется ли Jasper в режиме разработки? Если true, частота, с которой JSP проверяются на модификацию, может быть указана с помощью параметраificationTestInterval.true или false, по умолчанию true.
  • checkInterval - Если разработка имеет значение false и checkInterval больше нуля, фоновые компиляции включены. checkInterval - это время в секундах между проверками, чтобы увидеть, нужно ли перекомпилировать страницу JSP (и ее зависимые файлы). По умолчанию 0 секунд.

Элемент <Context> обладает следующими свойствами:

  • reloadable - установите в значение true, если вы хотите горячее развертывание классов и библиотек в дополнение к файлам jsp
  • antiResourceLocking - должно быть ложным

Все вышеизложенное было про сервер. Кэширование на стороне клиента - еще одна причина, по которой вы можете не видеть более новую версию страниц. Часто достаточно просто нажать CTRL + R / CTRL + F5.

Выбор вашей стратегии кэширования - это нечто иное, и другая тема - какие ресурсы вы бы указали браузеру для кэширования и на какой срок. Желательно, чтобы вы поместили заголовки кэша - Expires и Cache-ControlPragma) в обычное место в вашем приложении, где вы можете быстро их изменить.

4 голосов
/ 16 апреля 2014

Вы также можете остановить приложение (используя Tomcat WebApp Manager) и удалить «рабочую» папку приложения в каталоге tomcat. Это заставит Tomcat перестроить файлы кэша, используя новые JSP.

Путь к папке с файлами кэша выглядит примерно так: / USR / апач-кот-XXX / работа / Catalina / локальный /

Просто удалите папку с именем вашего приложения и перезапустите приложение.

0 голосов
/ 09 апреля 2010

Вы можете попробовать сделать 2 вещи:

Установить <context-param> тег в web.xml

<context-param>
  <param-name>weblogic.jsp.pageCheckSeconds</param-name>
  <param-value>0</param-value>
</context-param>

В вашей JSP странице вверху:

<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0);
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...