• 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文件的

  • 相关阅读:
    Selection Sort
    Alwayson环境下为备库创建查询用户
    Sencha Touch 数据层篇 Proxy(下)
    mapbox 栅格图层处理
    mapbox 删除 新增图层
    ant design vue 处理返回信息
    关于输入框中输入 特殊字符 get请求报错的办法
    mapbox url中xyz处理
    python中bisect模块使用
    ClickHouse字符串匹配探究
  • 原文地址:https://www.cnblogs.com/interdrp/p/3574708.html
Copyright © 2020-2023  润新知