tomcat 的缓存机制

这篇具有很好参考价值的文章主要介绍了tomcat 的缓存机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. HTTP缓存:Tomcat支持HTTP缓存机制,可以通过设置响应头中的Cache-Control、Expires和ETag等字段来控制缓存策略。这些字段告诉浏览器是否可以缓存响应以及缓存的有效期等信息。

  2. Servlet缓存:Tomcat还提供了Servlet缓存机制,它可以缓存Servlet的响应内容,避免重复生成相同的响应。通过在web.xml文件中配置<cacheable>true</cacheable>,可以启用Servlet缓存。

  3. 会话缓存:Tomcat支持会话(Session)缓存,可以将会话数据存储在内存中,提高会话的访问速度。可以通过在context.xml文件中配置<Manager className="org.apache.catalina.session.PersistentManager" />来启用会话缓存。

  4. 静态资源缓存:Tomcat可以缓存静态资源(如图片、CSS和JavaScript文件),以减少对文件系统的访问。可以通过配置context.xml文件中的<Resources>元素来启用静态资源缓存。

事出做项目时一个jsp页面修改后一直没有读出来,后来仔细研究了下tomcat才发现
当请求jsp页面时,Tomcat会分派给JspServlet来处理,在jspServlet的方法 service()中有一句
boolean precompile = preCompile(request); 
它会判断你请求jsp页面时有没有带?jsp_precompile查询字符串,如果带了就会重新编译
然后再由serviceJspFile(request, response, jspUri, null, precompile)进一步判断是否要进行编译jsp文件,下面是JspServletWraper service方法

 if (options.getDevelopment() || firstTime ) { 
 synchronized (this) { 
 if (firstTime) { 
firstTime = false; 
} 
// The following sets reload to true, if necessary 
ctxt.compile(); 
} 
} 

关键就在Compiler的isOutDated(boolean checkClass) 的判断上 。
判断标准是,如果 jsp最后修改时间大于目标文件的最后修改时间要重新编译。还有一种情况就是即使jsp的最后修改时间晚于目标文件的最后修改时间,但只要jsp中用了
include指令包含的某个文件的最后修改时间早于对应目标文件的修改时间的话,也是需要重新编译主jsp文件的文章来源地址https://www.toymoban.com/news/detail-708310.html

到了这里,关于tomcat 的缓存机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Redis】多级缓存(nginx缓存、redis缓存及tomcat缓存)

    传统的缓存策略一般是请求到达 tomcat 后,先查询redis,如果未命中则查询数据库。这种方式存在以下两个问题: 请求要经过 tomcat 处理, tomcat 的性能成为整个系统的瓶颈。 redis缓存失效时,会对数据库产生冲击。 多级缓存 就是充分利用请求处理的每个环节,分别添加缓存

    2023年04月21日
    浏览(46)
  • Tomcat中的缓存配置

    Tomcat中的缓存配置通常是通过Web应用程序的context.xml文件或Tomcat的server.xml文件进行设置。下面提供一个简单的案例来说明如何在Tomcat中配置缓存。 假设您的Web应用程序名为\\\"myapp\\\",我们将在context.xml中添加缓存配置。 打开Tomcat安装目录,找到\\\"conf\\\"文件夹,并在其中找到\\\"myapp.

    2024年02月15日
    浏览(19)
  • Mybatis缓存机制(一级缓存、二级缓存、三级缓存)

    缓存就是内存中的数据,常常来自对数据库查询结果的保存。 使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。 Mybatis的缓存分为一级缓存、二级缓存、三级缓存。 一级缓存: 作用域是同一个 SqlSession,在同一个 sqlSession 中两次执行相同的 sql 语句, 第一

    2024年02月05日
    浏览(52)
  • HTTP 缓存机制——强制缓存和协商缓存

    对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了 HTTP 缓存有两种实现方式,分别是强制缓存和协商缓存。 强缓存指的是只要浏览

    2024年01月25日
    浏览(44)
  • Redis缓存问题与缓存更新机制

    目录 ​编辑  一、缓存问题  1.1 缓存穿透  1.1.1 问题来源  1.1.2 解决方案  1.1.2.1 缓存空对象  1.1.2.2 使用布隆过滤器  1.2 缓存击穿  1.2.1 问题来源  1.2.2 解决方案  1.2.2.1 设置热点数据永远不过期  1.2.2.2 新增后台定时更新缓存线程(逻辑不过期)  1.2.2.3 使用分布式互斥锁

    2024年02月12日
    浏览(31)
  • JavaWeb 手写Tomcat底层机制

    目录 一、Tomcat底层整体架构         1.简介 :          2.分析图 :          3.基于Socket开发服务端的流程 :          4.打通服务器端和客户端的数据通道 :  二、多线程模型的实现         1.思路分析 :          2.处理HTTP请求 :          3.自定义Tomcat :  三、自定义Ser

    2024年02月14日
    浏览(45)
  • 强缓存、协商缓存(浏览器的缓存机制)是么子?

    为了减少资源请求次数,加快资源访问速度,浏览器会对资源文件如图片、css文件、js文件等进行缓存 所谓强缓存,可以理解为强制缓存的意思,即浏览器在访问某个资源时会判断是否使用本地缓存里已经存在的资源文件,使用本地缓存的话则不会发送请求到服务器,从而达

    2024年01月20日
    浏览(45)
  • 前端理解的HTTP缓存(作用、缓存策略、缓存控制机制、应用)

    目录 一、HTTP缓存有什么作用? 二、 浏览器的缓存策略有哪些? 1、强缓存(Expires、Cache-control) 2、协商缓存(Last-Modified、ETag) 3、缓存过程是什么? 三、浏览器缓存控制机制有哪些? 1、使用HTML Meta 标签 2、使用HTTP头信息控制缓存 四、哪些请求不能被缓存? 五、部署时

    2024年02月15日
    浏览(39)
  • Tomcat是如何打破“双亲委派“机制的

    目录 一、什么是双亲委派机制? 二、什么情况下我们需要破坏双亲委派模型?

    2024年02月22日
    浏览(49)
  • 【数据库】聊聊MVCC机制与BufferPool缓存机制

    上一篇文章,介绍了隔离级别,MySQL默认是使用可重复读,但是在可重复读的级别下,可能会出现幻读,也就是读取到另一个session添加的数据,那么除了配合使用间隙锁的方式,还使用了MVCC机制解决,保证在可重复读的场景下,同一个session读取的数据一致性。 MVCC(Multi-Vers

    2024年01月20日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包