【问题标题】:JSP page is cached, can not change it, tomcatJSP页面被缓存,无法更改,tomcat
【发布时间】:2010-04-08 20:38:44
【问题描述】:

我有一个 java 服务器,当我在 JSP 代码中更改某些内容时,我再次从浏览器调用该页面,我的更改未显示,服务器返回旧的 JSP

有人知道为什么吗?

【问题讨论】:

  • 您是否将您的应用部署为战争?

标签: jsp tomcat


【解决方案1】:

The Jasper How-to 告诉conf/web.xml,对于您的org.apache.jasper.servlet.JspServlet,您需要:

  • development - Jasper 是否用于开发模式?如果为 true,则可以通过 modifyTestInterval 参数指定检查 JSP 是否修改的频率。true 或 false,默认为 true。
  • checkInterval - 如果 development 为 false 并且 checkInterval 大于零,则启用后台编译。 checkInterval 是检查是否需要重新编译 JSP 页面(及其相关文件)之间的时间(以秒为单位)。默认 0 秒。

The <Context> element 具有以下属性:

  • reloadable - 如果除了 jsp 文件之外还想热部署类和库,则设置为 true
  • antiResourceLocking - 应该是假的

以上都是关于服务器的。客户端缓存是您可能看不到较新版本页面的另一个原因。只需按 CTRL+R / CTRL + F5 通常就足够了。

决定你的缓存策略是不同的,也是一个不同的主题——你会告诉浏览器缓存哪些资源,以及缓存多长时间。最好将缓存标头 - ExpiresCache-Control(和 Pragma)放在应用程序的公共位置,以便快速更改它。

【讨论】:

    【解决方案2】:

    您也可以停止应用程序(使用 Tomcat WebApp 管理器),并删除应用程序在 tomcat 目录中的“工作”文件夹。这将强制 tomcat 使用新的 JSP 重建缓存文件。

    缓存文件所在文件夹的路径如下所示: /usr/apache-tomcat-XXX/work/Catalina/localhost/

    只需删除包含您应用名称的文件夹,然后重新启动应用即可。

    【讨论】:

      【解决方案3】:

      你可以尝试做两件事:

      在 web.xml 中设置<context-param> 标签

      <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);
      %>
      

      【讨论】:

      • 网络逻辑? OP 正在使用 Tomcat。第二部分仅修复客户端问题。
      猜你喜欢
      • 1970-01-01
      • 2014-11-19
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多