首页 > 其他分享 >Tomcat “缓存”清理

Tomcat “缓存”清理

时间:2024-07-09 15:19:08浏览次数:14  
标签:文件 缓存 Tomcat tomcat 清理 jsp work 目录

一、关于Tomcat“缓存”的介绍

很多时候大家喜欢把tomcat的work目录里的东西叫做缓存,其实那不是很恰当,work目录只是tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录,这也正是为什么它叫work目录而不是cache目录的原因。   jsp,tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat容器通过ClassLoader类把这个index_jsp.class类装载入内存,进行响应客户端的工作。   tomcat会定时稍描容器内的jsp文件,读取每个文件的属性,当发现某个jsp文件发生改变时(文件的最后修改时间与上次稍描时不相同时),tomcat会重新转换、编译这个jsp文件。但是tomcat的稍描是定时的不是实时的,这也正是为什么jsp文件修改后需要几分钟的时间来等修改过的jsp生效。当然为了即刻生效,很多老前辈都会建议在修改jsp页面后立即清除work目录里的文件。   另外,tomcat容器中,对转换后的java文件(比如:index_jsp.java)的编译最大只支持64k,所以在其他容器中的jsp移植到tomcat容器中时会遇到大jsp文件会发生无法编译的情况,所以建议把jsp中的业务逻辑写入单独的类,在jsp中通过调用这个类的静态方法来执行,并将jsp页面中的js提取出来放到单独的js文件内。

二、Tomcat“缓存”的清理

由于很多时候我们在修改jsp的内容后,希望能立即生效,自然就不愿意等几分钟让tomcat自动刷新了(根据本人以往的经验,大部分情况下还是能马上生效的)。那么下面还是来介绍三种清理的方法:

方法1:

conf/server.xml文件

Context path中间加上reloadable="true"

例如:<Context path="" docBase="" reloadable="true">

path、docBase、reloadable属性举例说明: http://ycgit.blog.51cto.com/8590215/1688579open in new window

方法2:

删除work目录下的缓存文件

可以把Catalina目录删除;

注意:不能把work整个目录删除,不然重启tomcat 时,会把conf/web.xml删除掉,这样在启动时,日志 会提示:No Default web .xml,且访问页面会显示404错误;

方法3:

在jsp页面上方加上如下代码,这样的也可以使该jsp能实时加载,每次访问都会重新把这个jsp页面转换成.java文件

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

标签:文件,缓存,Tomcat,tomcat,清理,jsp,work,目录
From: https://www.cnblogs.com/david-cloud/p/18292009

相关文章

  • Tomcat 错误代号及状态码
    状态代码状态信息含义100Continue初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP1.1新)101SwitchingProtocols服务器将遵从客户的请求转换到另外一种协议(HTTP1.1新)200OK一切正常,对GET和POST请求的应答文档跟在后面。201Created服务器已经......
  • Nginx+Tomcat负载均衡、动静分离群集
    一:tomcat安装(在192.168.10.102和192.168.10.103)1:关闭防火墙[root@localhost~]#systemctlstopfirewalld[root@localhost~]#setenforce02:安装java环境[root@localhost~]#yum-yinstalljava[root@localhost~]#java-version3:安装tomcat[root@localhos......
  • Nginx+Tomcat群集
    一.实验环境 二.安装多台Tomcat服务器1.在安装Tomcat之前必须先安装JDK。        JDK的全称是JavaDevelopmentKit,是sun公司提供的JAVA语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用jvm解释这些......
  • 案列:Nginx+Tomcat负载均衡、动静分离群集
    一、案列:部署Tomcat(在192.168.10.102和192.168.10.103)1.关闭防火墙[root@localhost~]#systemctlstopfirewalld[root@localhost~]#setenforce02.安装java环境[root@localhost~]#yum-yinstalljava[root@localhost~]#java-version3.安装tomcat[root@localh......
  • Docker日志批量清理
    转发:原文:https://blog.csdn.net/u013737132/article/details/134639909Docker容器日志查看查看所有容器数据大小并按倒序排列:du-d1-h/var/lib/docker/containers|sort-rhdu:用于估算文件或目录空间使用量。-d1:仅显示深度为1的目录,即只显示直接子目录的信息。......
  • redis缓存的穿透及解决的方案
    概念缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案方案一:将每次查询到为null的值存入redis优点:简单缺点:消耗内存,可能会出现数据不一......
  • mybatis缓存
    MyBatis提供了两级缓存机制:一级缓存(本地缓存)和二级缓存(全局缓存)。这两级缓存可以显著提高数据查询的效率,减少数据库访问的次数。下面介绍MyBatis的一级缓存和二级缓存的原理、配置和使用方法。题外话:......
  • 使用Java构建可靠的分布式缓存系统
    使用Java构建可靠的分布式缓存系统大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!1.分布式缓存系统概述在现代软件架构中,分布式缓存系统扮演着至关重要的角色,它能够显著提升系统的性能和扩展性。本文将探讨如何使用Java构建一个可靠的分布式缓存系统,利......
  • spring为什么使用三个缓存解决循环依赖
    使用三个缓存(singletonObjects,earlySingletonObjects,singletonFactories)来解决循环依赖问题,主要是为了确保Bean的正确创建和初始化流程,同时避免死锁和无限递归的情况。下面是使用三个缓存的好处和必要性:确保Bean的正确创建:singletonFactories缓存中保存的是Bean的工厂对象,这......
  • spring三级缓存解决循环依赖原理
    在Spring框架中,Bean的实例化和管理是通过其核心的IoC容器完成的。在处理Bean的依赖注入时,可能会遇到循环依赖的问题,即两个或多个Bean相互引用对方。为了解决这一问题,Spring采用了三级缓存机制。一级缓存:singletonObjects这是SpringIoC容器中的主要缓存,用于存放已经创建并完全初......