Tomcat의 캐싱 메커니즘

  1. HTTP 캐시: Tomcat은 HTTP 캐시 메커니즘을 지원하며 응답 헤더에 Cache-Control, Expires 및 ETag와 같은 필드를 설정하여 캐시 정책을 제어할 수 있습니다. 이러한 필드는 응답을 캐시할 수 있는지 여부와 캐시의 유효 기간을 브라우저에 알려줍니다.

  2. 서블릿 캐시: Tomcat은 또한 동일한 응답이 반복적으로 생성되는 것을 방지하기 위해 서블릿의 응답 콘텐츠를 캐시할 수 있는 서블릿 캐시 메커니즘을 제공합니다. web.xml 파일에서 <cacheable>true</cacheable>을 구성하여 서블릿 캐싱을 활성화할 수 있습니다.

  3. 세션 캐시: Tomcat은 세션 액세스 속도를 향상시키기 위해 세션 데이터를 메모리에 저장할 수 있는 세션(Session) 캐시를 지원합니다. context.xml 파일에서 <Manager className="org.apache.catalina.session.PertantManager" />를 구성하여 세션 캐싱을 활성화할 수 있습니다.

  4. 정적 리소스 캐싱: Tomcat은 정적 리소스(예: 이미지, CSS 및 JavaScript 파일)를 캐시하여 파일 시스템에 대한 액세스를 줄일 수 있습니다. context.xml 파일에서 <Resources> 요소를 구성하여 정적 리소스 캐싱을 활성화할 수 있습니다.

프로젝트 작업을 하다가 jsp 페이지를 수정한 후 읽어내지 못하는 현상이 있었습니다. tomcat을 주의깊게 연구한 결과 jsp 페이지가 요청되면 Tomcat이 이를 JspServlet에 할당하여 처리하는 것을 발견했습니다 . 불리언 문장이 있습니다. precompile = 
jspServlet preCompile(request)의 service() 메소드에서 jsp 페이지를 요청할 때 ?jsp_precompile 쿼리 문자열이 있는지 판단하고, 가져오면 다시 컴파일한 후 serviceJspFile(request, response, jspUri, null, precompile)을 사용하여 jsp 파일을 컴파일할지 여부를 추가로 판단합니다. 다음은 JspServletWraper 서비스 메서드입니다.


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

핵심은 컴파일러의 isOutDated(boolean checkClass) 판단에 있습니다.
판단 기준은 jsp의 마지막 수정 시간이 대상 파일의 마지막 수정 시간보다 길면 재컴파일해야 한다는 것입니다.
또 다른 상황은 jsp의 마지막 수정 시간이 대상 파일의 마지막 수정 시간보다 늦 더라도 jsp의 include 명령에 포함된 파일의 마지막 수정 시간이 대상 파일의 수정 시간보다 빠르면 되는 경우입니다. 해당 대상 파일을 다시 시작해야 합니다. 기본 jsp 파일을 컴파일합니다.

Supongo que te gusta

Origin blog.csdn.net/oligaga/article/details/132677864
Recomendado
Clasificación