귀하의 질문에 분명하지 않지만 데이터를 캐시하는 방법보다는 압축 된 데이터를 처리하는 방법에 대한 정보를 찾고 계신 것 같습니다. 대부분의 웹 서버는 그렇게하도록 구성된 경우 및 클라이언트가 요청에 필요한 헤더를 제공하면 자동으로 데이터를 압축합니다. 즉, 페이지를 전송하기 전에 압축 할 필요가 없으며 서버는 가능한 경우 자동으로 압축합니다.
캐싱의 경우 처리 된 버전의 페이지를 디스크 또는 메모리에 저장할 수 있습니다 (예 : memcache).
예를 들어 매시간마다 페이지를 업데이트하면 crontab과 같은 스크립트를 실행하여 매 시간마다 페이지를 생성하고 생성 된 페이지 만 제공 할 수 있습니다. 서버 측 캐싱과 관련하여 특별히 고려해야 할 사항이 없으므로 상당히 직선적이어야합니다.
반면에 캐시 된 버전이나 신선한 버전을 사용하기 전에 페이지가 오래되었다는 것을 확인해야하는 경우 조금 더 복잡해집니다. 예를 들어, 데이터가 오래되었다는 것을 확인하는 것이 페이지를 생성하는 것만큼이나 비용이 많이들 수도 있습니다.
자세한 내용 없이는 구체적인 답변을 드릴 수 없습니다.
public class MyFilter implements Filter {
private byte[] my_gzipped_page = ....
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
if (req instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String ae = request.getHeader("accept-encoding");
if (ae != null && ae.indexOf("gzip") != -1) {
response.addHeader("Content-Length",
Integer.toString(my_gzipped_page.length));
response.addHeader("Content-Encoding", "gzip");
OutputStream output = response.getOutputStream();
output.write(my_gzipped_page);
output.flush();
output.close();
return;
} else ...
}
}
...
}
바이트 배열로 압축 된 버전의 페이지가 있다고 가정 할 때 http 응답에 어떻게 삽입합니까? 나는 매번 페이지를 압축하고 싶지 않다. 나는 웹 서버가 아닌 Tomcat을 다루고있다. – JVerstry
음 Tomcat은 웹 서버입니다. 저는 스스로 익숙하지 않지만 표준 Java 서블릿을 사용한다고 가정하면 HttpServletResponse.addHeader()를 사용하여 필요한 헤더를 설정 한 다음 HttpServletResponse.getWriter()를 사용하여 바이트 배열을 전송할 수 있어야합니다.).인쇄(). – Nico