关于tomcat 缓存

来源:互联网 发布:学知不足的名人例子 编辑:程序博客网 时间:2024/06/17 03:23

今天在开发过程中,增加了几个js文件,在jsp文件中引入后,但是浏览器中一直报 改对象没有定义。然后我尝试了各种方法,新写个文件再次引入,结果发生了一个更诡异的结果,第一次访问该页面的时候,依旧报该对象没有定义,但是第二次就正常了,出现这种情况的原因还在探究中。不过,最主要的罪魁祸首,是tomcat的缓存。

tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译(从 work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp页面会被编译成应该是servlet文件,下次再来 访问时,就直接运行servlet类就可以向客户端反应响应页面了,所以有的博客说第一次访问时会比较慢,是因为新发布上去的页面在第一个人访问时,会先 编译成servlet文件,所以慢了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户,所以快),编译后的文件都会存储在work目录下。而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。所以当清空了work目录后,该过程将会从新来过。     
    有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。



以下是转载:tomcat清除缓存的方式:

用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开     依然是以前的Jsp的页面。

出现这种现象的原因主要是tomcat缓存的原因。

解决办法如下:

在jsp文件头加上

<meta http-equiv="Expires" content="0">
      <meta http-equiv="kiben" content="no-cache">

其中,第一行的content="0",是表示过期的时间,如果不是0的话,就必须使用GMT的时间格式。第二行表示不用缓存机制。

删除work目录下的缓存文件。

conf/server.xml 文件Context path 中间加上 reloadable="true"

例如:<Context path="" docBase="E:\MYJSP\" debug="0" reloadable="true" />

在tomcat的startup.bat里首部加上批处理命令

rd/s/q "D:\Program Files\tomcat-6.0\work\Catalina

tomcat路径根据自己情况修改.

这样基本可以解决缓存遗留问题。

==========================================

方法1、再当前浏览器,工具里清空一下上网记录(如果你的cookie没那么重要的话,全部选中,清空)。重新打开一个IE浏览器,再打上网址,回车。
如果还不行

方法2、重启tomcat,但是太费时间,有时还不管用。。

方法3、Apache Software Foundation\Tomcat 5.5\work\Catalina\localhost
有一些发布程序的时候编译的jsp的Java类,可都清空该文件夹,也可以只删除跟当前项目相关的类。

方法3,最直接。。。彻底
不过我常用方法1。方法3,要翻那么多文件夹,我会在方法1实在还是不可以的话。才用方法3

=========================================

方法一:
conf/server.xml文件
Context path中间加上reloadable="true"
例如:<Context path="" docBase=""  reloadable="true">

方法二:
删除work目录下的缓存文件
可以把Catalina目录删除; 注意:不能把work整个目录删除,不然重启tomcat时,会把conf/web.xml删除掉,这样在启动时,日志会提示:No Default web.xml,且访问页面会显示404错误;


原创粉丝点击