[WebLogic] How To Set Cache-Control?
1. Overview
WebLogic 에서 Cache-Control (max-age) 설정 방법
2. Descriptions
WLS 에서는 Cache-Control Header 제어를 가능케 하는 기능은 제공되지 않는다.
기본적으로 JSP/Servlet Code에 의해서 구현해야 한다.
아래의 JSP code는 Response Header에 Cache-Control 을 추가한다.
해당 JSP 에서만 적용된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%
response.setHeader("Cache-Control", "max-age=10");
%>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Index Page</title>
<script src="js/common.js"></script>
</head>
<body>
<h1>Welcome to Index Page</h1>
</body>
</html>
이외 정적 파일(JS, HTML, IMG/VIDEO) 들에 대해 Cache-Control header를 적용 하려면 Filter 방식을 이용하거나 Web Server 에서 Response Header를 설정해야 한다.
아래는 Filter 방식에 필요한 Code와
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class StaticResourceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filePath = "/static" + request.getPathInfo();
ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream(filePath);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
// MIME 타입 설정
String mimeType = context.getMimeType(filePath);
if (mimeType == null) {
mimeType = "application/octet-stream";
}
response.setContentType(mimeType);
// 파일 스트림 전송
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.flush();
}
}
web.xml 기술 방식이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
<web-app>
<servlet>
<servlet-name>StaticResourceServlet</servlet-name>
<servlet-class>example.StaticResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StaticResourceServlet</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
</web-app>
3. References
How to Setup Cache-Control: Max-age on WebLogic (Doc ID 2477426.1)
WebLogic에서 Cache-Control (max-age) 설정 방법 (Doc ID 3074203.1)