Skip to content

웹 언어별 no-cache 리스트

조회 수 6704 추천 수 0 2013.04.22 14:03:07

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

일요일은 짜빠게뤼~ 먹는날~^^

태그
엮인글 :
http://adminplay.com/196133/9ae/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
307 [ UDP ] packet buffer size 조절 ADMINPLAY 2013-04-25 7025
306 리눅스 메모리 관리, 왜 메모리 여유공간이 없을까? (top ... ADMINPLAY 2013-04-25 5301
305 sysctl 조정 방법 ADMINPLAY 2013-04-25 7287
» 웹 언어별 no-cache 리스트 ADMINPLAY 2013-04-22 6704
303 ubuntu 부팅시 서비스 자동실행 및 실행방지 ADMINPLAY 2013-04-16 7945
302 Installing NGINX, PHP, and MySQL on Ubuntu 10.04 LTS u... ADMINPLAY 2013-04-11 6105
301 Bigbluebutton Installation Ubuntu ADMINPLAY 2013-04-11 9012
300 dpkg 사용법 ADMINPLAY 2013-04-03 5010
299 [Ubuntu] 부팅시 시작되는 데몬 관리하기 – update-rc.d ADMINPLAY 2013-03-05 33326
298 ubuntu 10.04 에서 Nginx, Mysql, PHP5 ADMINPLAY 2013-02-28 5241
297 우분투(Ubuntu) ssh 설정하기 ADMINPLAY 2013-02-27 5665
296 proxy 서버 통해서 외부문서 불러오기 curl ADMINPLAY 2013-02-20 8153
295 운영중인 Linux 서버에서 NTFS 파일 시스템 삭제하기 ADMINPLAY 2013-01-16 5737
294 Sample rate(샘플레이트)와 Bit rate (비트레이트) ADMINPLAY 2012-12-28 9769
293 도메인 Status 상태별 설명 안내 ADMINPLAY 2012-12-28 4898
292 sakai 2.7.0 source installation in ubuntu 10.04.1 file ADMINPLAY 2012-10-31 7941
291 Ubunt (우분투) 에서 sun-java6-jdk 설치 ADMINPLAY 2012-10-30 7179
290 Unbunt OS 에서 Maven 설치(Install it – apt-get install) ADMINPLAY 2012-10-30 7296
289 우분투 DNS 변경 및 고정 ADMINPLAY 2012-10-30 7178
288 우분투 네트웍크 설정 ADMINPLAY 2012-10-30 6795

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234