언어별 no-cache 리스트

Posted by 비회원 프로그래밍/OTHER TIP : 2010.01.06 16:04

언어별 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 헤더의 철자가 정확한가? 당연 철자가 잘못되었다면 효과를 얻지 못할 것이다.

신고
태그 : ,

댓글을 달아 주세요

 «이전 1 ··· 214 215 216 217 218  다음»