1。问题
tomcat 的缓存机制
事出做项目时一个jsp页面修改后一直没有读出来,后来仔细研究了下tomcat才发现
当请求jsp页面时,Tomcat会分派给JspServlet来处理,在jspServlet的方法 service()中有一句
boolean precompile = preCompile(request);
它会判断你请求jsp页面时有没有带?jsp_precompile查询字符串,如果带了就会重新编译
然后再由serviceJspFile(request, response, jspUri, null, precompile)进一步判断是否要进行编译jsp文件,下面是JspServletWraper service方法
1 if (options.getDevelopment() || firstTime ) {
2 synchronized (this) {
3 if (firstTime) {
4 firstTime = false;
5 }
6 // The following sets reload to true, if necessary
7 ctxt.compile();
8 }
9 }
10 关键就在Compiler的isOutDated(boolean checkClass) 的判断上 。
判断标准是,如果 jsp最后修改时间大于目标文件的最后修改时间要重新编译。还有一种情况就是即使jsp的最后修改时间晚于目标文件的最后修改时间,但只要jsp中用了
include指令包含的某个文件的最后修改时间早于对应目标文件的修改时间的话,也是需要重新编译主jsp文件的
2。解决方法
1)在jsp文件头加上
<meta http-equiv="Expires" content="0">
<meta http-equiv="kiben" content="no-cache">
其中,第一行的content="0",是表示过期的时间,如果不是0的话,就必须使用GMT的时间格式。第二行表示不用缓存机制。
2)删除work目录下的缓存文件。
conf/server.xml 文件Context path 中间加上 reloadable="true"
例如:<Context path="" docBase="E:\MYJSP\" debug="0" reloadable="true" />
在tomcat的startup.bat里首部加上批处理命令
rm -rf "/usr/tomcat-5.5.15/work/Catalina"
tomcat路径根据自己情况修改.
分享到:
相关推荐
接下来,我们将详细介绍几种常用的清除Tomcat缓存的方法: ##### 方法一:手动删除工作目录中的文件 1. **停止Tomcat服务**:确保在进行任何清理操作之前停止Tomcat服务。这是因为Tomcat在运行时可能会阻止某些...
win7自动清除tomcat缓存及日志
本文将详细解释如何执行TOMCAT缓存清理的步骤,以解决类似问题。 首先,我们要理解Tomcat中的缓存主要存在于以下几个位置: 1. **`work`目录**:这是Tomcat生成并存储编译后的JSP文件的地方。当JSP页面被访问时,...
通过监控Tomcat缓存的命中率、大小、过期等指标,及时发现并解决问题。可以使用Tomcat提供的管理界面,或者集成如Prometheus、Grafana等监控工具来实现。 总结来说,理解并有效利用Tomcat的缓存机制,可以显著提升...
以上只是Tomcat使用中可能遇到的部分问题和解决方法,实际运维中还需要根据具体情况进行深入分析和处理。对于每个问题,通常需要查看Tomcat的日志文件以获取更详细的错误信息,以便更准确地定位和解决问题。同时,...
在Tomcat缓存控制插件中,可能利用Lambda表达式来编写简洁的回调函数,处理缓存的加载、更新和清除等操作。 此外,Java 8还引入了Stream API,这为处理集合提供了新的途径。通过Stream API,开发者可以进行更高效的...
Tomcat在处理动态内容时,如JSP,会将编译后的Java类存储在工作目录(work目录)下的各个应用特定子目录中。这些编译后的类文件就是缓存的一部分,它们允许Tomcat快速响应后续的相同请求,而无需每次都重新解析和...
本篇文章将详细讲解如何解决Tomcat的跨域问题。 1. 同源策略与跨域问题: 同源策略是浏览器为了保护用户信息安全而实施的一种安全机制,它限制了脚本只能访问与当前页面同源的资源。然而,在现代Web应用中,前后端...
标题 "nginx TOMCAT 文件下载 上传 进度条 缓存" 涉及到的是在Web服务器场景中,如何利用Nginx和Tomcat处理文件的下载、上传以及实现进度条显示和缓存优化的技术点。下面将详细介绍这些内容。 1. **Nginx与Tomcat的...
这是因为Redis提供了分布式缓存的能力,能够跨多个服务器保存和检索Session数据,从而解决了单个服务器Session管理的问题。在微服务架构或者集群环境中,用户在不同服务器间的跳转不会导致Session丢失,提升用户体验...
因此,使用Redis与Tomcat7配合实现session共享,能有效解决这些问题。 在分布式环境中,session共享的主要目标是确保用户在不同服务器之间切换时,其会话状态能够保持一致。Redis作为中央缓存服务器,可以存储所有...
本文将讨论在Eclipse中部署Tomcat服务器时出现的问题和解决方案。 问题描述 在Eclipse中部署Tomcat服务器时,可能会出现各种问题。例如,在Tomcat服务器启动时,可能会出现警告信息,例如设置属性“source”到...
本文主要介绍了jsp解决文件上传后重启Tomcat时文件自动删除问题,包括问题分析和详细解决方法。该问题是指在jsp项目中上传文件后,重启Tomcat服务器或清理缓存时,上传的文件会自动删除的问题。 问题分析 在jsp...
### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...
1. 创建运行配置:在"Run/Debug Configurations"中,选择"SmartTomcat",然后点击"+"号新建一个配置,填写Tomcat的安装路径及项目部署路径。 2. 部署项目:在配置设置完毕后,点击绿色的三角形运行按钮,SmartTomcat...
这里我们讨论的主题是"tomcat8共享session之redis缓存",这是一种利用Redis作为中间缓存服务器来实现Tomcat8集群中Session共享的解决方案。 首先,让我们了解一下Tomcat8。Tomcat是一个开源的Java Servlet容器,...
提供方法解决appscan扫描出来的漏洞《发现可高速缓存的SSL页面》,主要是设置页面不被缓存
在构建高性能、高可用性...总结来说,"nginx+tomcat7负载均衡+redis缓存session"的架构是一种强大的解决方案,适用于需要高可用性、可扩展性和高性能的Java Web应用。通过合理配置和优化,可以满足复杂业务场景的需求。
解决这个问题需要深入理解Tomcat的内存管理机制以及如何诊断和修复内存泄漏。以下是对“tomcat内存泄漏备份方法”的详细解析。 1. **内存泄漏的理解** 内存泄漏是指程序在申请内存后,无法释放已不再使用的内存...
通过阅读和分析源码,可以加深对Tomcat运行原理的理解,这对于解决实际问题和进行性能调优非常有帮助。 总之,《Tomcat深入剖析》结合源码分析,是一本全面且深入的Tomcat学习资源,无论是初学者还是经验丰富的...