오늘은 웹 캐시 저장을 방지하는 방법을 공유합니다.

 

웹 캐시는 사용자(client)가 웹 사이트(server)에 접속 할 때, 서버 지연을 줄이기 위해 정적 컨텐츠(image, js, css) 등을 임시 저장하는 정보기술 입니다.

캐시를 이용하면 저장된 웹 사본의 정보를 불러옴으로써 더 빠른 열람이 가능하며 트래픽 낭비를 해소할 수 있습니다.

 

 

※ 캐싱의 문제점

 

- 빠르게 변화되는 사이트에 비해 사용자는 이미 하드디스크에 캐시된 버전으로 보일 수 있으므로

포맷이 안 맞거나 올바르지 않은 이미지로 보여질 수 있습니다.

 

- 웹 서비스 내 주요 정보 및 민감 정보를 다루는 페이지가 존재할 경우 해당 페이지의 캐싱 방지 설정이 따로 없다면

사용자 세션이 만료된 이후에도 브라우저 내 뒤로가기 등을 통해 별도의 인증 과정 없이 주요 페이지에 접근이 가능해집니다.

이로 인해 민감한 정보들이 악의적인 사용자들에게 노출될 가능성이 있기 때문에 캐싱 방지를 하는 것이 좋습니다.

 

 

각 언어 별 no-cache 설정 방법은 문법 형태의 차이만 약간 있을 뿐 설정 방법은 동일합니다.

 

 제목

 설명 

Cache-Control

 HTTP/1.1 스펙 에서 정의, no-cache, no-store 등의 설정

Pragma

 Cache-Control이 생기기 전에 HTTP/1.0 no-cache 설정을 위해 사용되는 헤더. HTTP/1.0 를 사용하는 클라이언트를 위해 사용

Expires

 캐시 만료 시간 지정 '-1' 설정 시, 캐시된 페이지를 즉시 만료

 

 

HTML, ASP, JSP, PHP 웹 캐시 저장 방지

 

HTML인 경우

<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="No-Cache">
<META http-equiv="Expires" content="-1"> 

 

ASP인 경우

<%   
    Response.Expires = 0
    Response.AddHeader "Pragma","no-cache"
    Response.AddHeader "Cache-Control","no-cache,must-revalidate"
%>   

 

JSP인 경우

<%   
    response.setHeader("Cache-Control","no-store");
    response.setHeader("Pragma","no-cache");
    response.setDateHeader("Expires",0);
    if (request.getProtocol().equals("HTTP/1.1"))
    	response.setHeader("Cache-Control", "no-cache");
%> 

 

PHP인 경우   

<?
    header("Pragma: no-cache");
    header("Cache-Control: no-cache,must-revalidate");
?>