【发布时间】:2010-04-08 20:38:44
【问题描述】:
我有一个 java 服务器,当我在 JSP 代码中更改某些内容时,我再次从浏览器调用该页面,我的更改未显示,服务器返回旧的 JSP。
有人知道为什么吗?
【问题讨论】:
-
您是否将您的应用部署为战争?
我有一个 java 服务器,当我在 JSP 代码中更改某些内容时,我再次从浏览器调用该页面,我的更改未显示,服务器返回旧的 JSP。
有人知道为什么吗?
【问题讨论】:
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 文件之外还想热部署类和库,则设置为 trueantiResourceLocking - 应该是假的以上都是关于服务器的。客户端缓存是您可能看不到较新版本页面的另一个原因。只需按 CTRL+R / CTRL + F5 通常就足够了。
决定你的缓存策略是不同的,也是一个不同的主题——你会告诉浏览器缓存哪些资源,以及缓存多长时间。最好将缓存标头 - Expires 和 Cache-Control(和 Pragma)放在应用程序的公共位置,以便快速更改它。
【讨论】:
您也可以停止应用程序(使用 Tomcat WebApp 管理器),并删除应用程序在 tomcat 目录中的“工作”文件夹。这将强制 tomcat 使用新的 JSP 重建缓存文件。
缓存文件所在文件夹的路径如下所示: /usr/apache-tomcat-XXX/work/Catalina/localhost/
只需删除包含您应用名称的文件夹,然后重新启动应用即可。
【讨论】:
你可以尝试做两件事:
在 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);
%>
【讨论】: