• -동두천 2.3℃
  • -강릉 1.8℃
  • 비 또는 눈서울 2.5℃
  • 대전 1.9℃
  • 대구 2.8℃
  • 울산 2.5℃
  • 광주 3.3℃
  • 부산 4.2℃
  • -고창 2.1℃
  • 제주 6.0℃
  • -강화 1.7℃
  • -보은 2.5℃
  • -금산 0.9℃
  • -강진군 4.2℃
  • -경주시 2.2℃
  • -거제 3.7℃
기상청 제공

programming

언어별 no-cache 리스트

언어별 no-cache 리스트


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

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");  
?>  


WML 
<wml> 
<head> 
<meta http-equiv="Cache-Control" content="max-age=no-cache" forua="true"/> 
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/> 
</head> 
<card> 
.. 
.. 
</card> 
</wml> 


JSP의 사용예  
<%@ page contentType="text/vnd.wap.wml"%>  
<%  
response.setHeader("cache-control","no-store"); // http 1.1  
response.setHeader("Pragma","no-cache"); // http 1.0  
response.setDateHeader("Expires",0); // proxy server 에 cache방지.  
%>  

<?xml version="1.0" encoding="ks_c_5601-1987"?>  
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"  
"
http://www.wapforum.org/DTD/wml_1.1.xml">  

<wml>  
<card>  
<p>  
테스트  
</p>  
</card>  
</wml>




페이지 만료,캐쉬설정 Expires Pragma Cache-Control no-cache



만료 및 Expires 헤더

만료일을 지정하는 헤더

 

Cache-Control 헤더

IE는 HTTP 1.1 Cache-Control 헤더를 지원한다


Pragma:no-cache 헤더

레거시 HTTP 1.0 서버는 Cache-Control 헤더를 사용할 수 없다. 이전 버전과 HTTP 1.0 서버와의 호환을 위해 Internet Explorer는 HTTP Pragma:no-cache 헤더의 특수한 사용을 지원한다


웹서버의 설정 또는 기타 각 프로그램에서 코딩으로도 제어 할 수 있다.


[IIS]


[HTML예제]

<HEAD>

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Expires" CONTENT="-1">

<meta http-equiv="expires" content="wed, 04 jul 1973 16:00:00 gmt">

</HEAD>


[ASP예제]

<%

Response.Expires = 0

Response.Expiresabsolute = Now() - 1

Response.AddHeader "pragma","no-cache"

Response.AddHeader "cache-control","private"

Response.CacheControl = "no-cache"

%>


HTTP RFC문서

  Hypertext Transfer Protocol -- HTTP/1.1 (RFC2068)


캐쉬테스트

  http://www.procata.com/cachetest/

Links:

  HTTP 1.1 caching specification
  Caching Tutorial for Web Authors and Webmasters
  Check the cacheability of a specific page


기타 유용한 메타태그 정리

  http://www.i18nguy.com/markup/metatags.html




[ASP] 페이지 캐싱 금지 방법

변화된 페이지의 결과가 아닌 캐싱된 페이지가 계속해서 노출될 경우 ASP페이지의 경우 아래와 같은 스크립트를 넣어 캐싱을 막을 수 있고 익스플로러 사용자의 경우 자신의 컴퓨터에 저장된 캐싱정보를 읽는것이 아니라 서버로부터 새롭게 변경된 정보를 가져오려면 "Ctrl + 새로고침"을 눌러 캐싱을 막을 수 있다.
Microsoft Internet Information Server(IIS)를 사용하면 특정 Active Server Page(ASP) 페이지의 시작 부분에 다음 스크립트를 사용하여 휘발성 페이지나 제한적인 페이지를 쉽게 표시할 수 있다.
  • <%
  • Response.Expires = 0
  • Response.Expiresabsolute = Now() - 1
  • Response.AddHeader "pragma","no-cache"
  • Response.AddHeader "cache-control","private"
  • Response.CacheControl = "no-cache"
  • %>
만료 및 Expires 헤더
모든 웹 서버는 모든 웹 페이지의 만료 구성을 사용하는 것이 좋다. 웹 서버가 요청 클라이언트에 반환되는 모든 리소스에 대해 HTTP Expires 응답 헤더를 통해 만료 정보를 제공하지 않는 것은 좋지 않은 구성이다. 대부분의 브라우저와 중간 프록시는 현재 이 만료 정보를 고려하고 이 정보를 이용하여 네트워크 상의 통신 효율을 향상시킨다.
Expires 헤더는 항상 서버의 특정 파일을 클라이언트가 업데이트해야 할 시간을 지정하는 데 사용된다. 페이지가 정기적으로 업데이트될 때 다음 업데이트 기간이 가장 효율적인 응답이다. 인터넷에서 매일 새벽 5시에 업데이트되는 일간 뉴스 페이지를 예로 들어 보자. 이 뉴스 페이지의 웹 서버는 다음날 새벽 5시 값으로 Expires 헤더를 반환해야 한다. 이 값이 반환되면 브라우저는 페이지가 실제로 변경될 때까지 웹 서버에 다시 연결할 필요가 없다.
변경될 것 같지 않은 페이지에는 대략 1년의 만료 날짜가 표시된다.
많은 경우에, 웹 서버는 서버에 바로 변경될 정보가 들어 있는 휘발성 페이지를 하나 이상 가지고 있다. 이 페이지는 Expires 헤더에 대해 서버에서 값 "-1"로 표시한다. 사용자가 이후에 요청하면 Internet Explorer는 대개 조건부 If-Modified-Since 요청을 통해 해당 페이지를 업데이트하기 위해 웹 서버에 연결한다. 그러나, 해당 페이지는 디스크 캐시("임시 인터넷 파일")에 남아 있고, 뒤로와 앞으로 단추로 열어본 페이지 목록을 액세스할 경우 또는 브라우저가 오프라인 모드에 있을 경우에 원격 웹 서버에 연결하지 않고 적절한 상황에서 사용된다.
Cache-Control 헤더
그러나 어떤 페이지는 휘발성이거나 제한적이어서 디스크 캐싱이 필요없다. 이를 위해 Internet Explorer는 HTTP 1.1 Cache-Control 헤더를 지원한다. 이것은 HTTP 1.1 서버가 캐시값을 지정하지 않았을 경우 특정 웹 리소스의 모든 캐싱을 방지한다.
브라우저가 웹 서버에 다시 연결할 수 있을 때까지 캐시에 없는 페이지는 액세스할 수 없기 때문에 서버는 Cache-Control 헤더를 절약하여 사용해야 한다. 대부분의 경우에 "Expires: -1"을 사용하는 것이 좋다.
Pragma: No-Cache 헤더
불행히도, 레거시 HTTP 1.0 서버는 Cache-Control 헤더를 사용할 수 없다. 이전 버전과 HTTP 1.0 서버와의 호환을 위해 Internet Explorer는 HTTP Pragma: no-cache 헤더의 특수한 사용을 지원한다. 클라이언트가 보안 연결(https://)을 통해 서버와 통신하고 서버가 응답과 함께 Pragma: no-cache 헤더를 반환하면 Internet Explorer는 응답을 캐시하지 않는다.
그러나, Pragma: no-cache 헤더는 이를 위해 만들어진 것은 아니다. HTTP 1.0과 1.1 사양에 따라 이 헤더는 응답이 아니라 요청 컨텍스트에서만 정의되고 실제로 프록시 서버에 맞게 만들어져 몇몇 중요한 요청이 대상 웹 서버에 도달하지 못하도록 할 수 있다. 이후의 응용 프로그램에서는 Cache-Control 헤더가 캐싱을 제어하는 적절한 수단이 될 것이다.
HTTP-EQUIV META 태그
HTML 페이지는 HTML 문서에서 특정 HTTP 헤더를 지정하는 META 태그의 특수한 HTTP-EQUIV 폼을 허용한다. 다음은 두 가지 Pragma: no-cache와 Expires: -1을 사용하는 간단한 HTML 페이지 예이다.
  • <HTML><HEAD>
  • <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  • <META HTTP-EQUIV="Expires" CONTENT="-1">
  • </HEAD>
  • <BODY>
  • </BODY>
  • </HTML>
Pragma: no-cache는 보안 연결을 통해 사용될 때만 캐싱을 방지한다. Pragma: no-cache META 태그는 비 보안 페이지에서 사용될 경우 Expires: -1과 동일하게 처리된다. 페이지는 캐싱되지만 즉시 만료되는 것으로 표시된다.
Cache-Control META HTTP-EQUIV 태그는 무시되고 Internet Explorer 버전 4 또는 5에서 아무 효과가 없다. Cache-Control을 사용하려면 이 헤더가 위의 Cache-Control 섹션에 설명된 HTTP 헤더를 사용하여 지정되어야 한다.
표준 HTTP 헤더가 META 태그보다 더 많이 사용된다. META 태그는 일반적으로 HTML HEAD 섹션의 맨 위에 나타나야 한다. 그리고 Pragma HTTP-EQUIV META 태그에는 알려진 문제점이 적어도 하나 있다.
Cache-Control 헤더가 비 ASP 페이지에서 사용될 경우에는 서버 구성의 옵션을 사용하여 이 헤더를 추가해야 할 필요가 있다. IIS 4에서는 다음과 같이 수행한다.
  • 인터넷 서비스 관리자를 불러온다.
  • 컴퓨터와 서비스 트리를 사용하여 기본 웹 서버(또는 문제의 웹 서버)를 열고 Cache-Control 헤더가 필요한 컨텐트가 들어 있는 디렉터리를 찾는다.
  • 해당 디렉터리의 등록 정보 대화 상자를 가져온다.
  • HTTP 헤더 탭을 선택한다.
  • 사용자 지정 HTTP 헤더 그룹에서 추가 단추를 누르고 헤더 이름으로 "Cache-Control"을, 헤더 값으로 "no-cache"를 추가한다.
웹 서버 전체적으로 이 헤더를 사용하는 것은 좋지 않다. 클라이언트에서 절대로 캐싱되지 않아야 하는 컨텐트로만 사용을 제한한다. 위의 방법들을 지정했는데도 여전히 Internet Explorer와 캐싱에 문제가 있을 때는 다음의 방법을 시도해 본다.
  • ASP "Response.CacheControl" 속성과 함께 또는 반환된 HTTP 헤더를 통해 Cache-Control 헤더를 사용하는가? 이것은 Internet Explorer에서 캐싱을 방지하는 최적의 방법이다.
  • Internet Explorer 4.01 서비스 팩 2 이상을 사용하고 있는가? 이전 버전의 브라우저에서 캐싱을 완전히 방지하는 방법은 없다.
  • 웹 서버에 HTTP 1.1이 설정되어 있고 Internet Explorer에 HTTP 1.1 응답을 반환 중인지 재차 확인했는가? Cache-Control 헤더는 HTTP 1.0 응답에 적합하지 않다.
  • 서버쪽에서 CGI/ISAPI/Servlets를 사용할 경우 특히 HTTP 헤더의 CRLF 종결에 대해 정확하게 HTTP 1.1 사양을 따르는가? 성능 면에서 Internet Explorer는 대개 HTTP 1.1 사양을 위반하는 응답은 방지한다. 이 결과 대개 무시된 헤더 또는 예상치못한 서버 오류 보고서가 만들어진다.
  • HTTP 헤더의 철자가 정확한가? 당연 철자가 잘못되었다면 효과를 얻지 못할 것이다.