본문 바로가기

Paul Work/HTML

HTTP/1.1 Cache-Control Header

 
Cache-Control의 directive는 cache로 인하여
request나 resposne가 방해 받는 것을 막기 위하여 사용된다.
예를 들어 웹 서버의 경우 매우 자주 변경되는 데이터에 대해서는 클라이언트( cache 서버 또는 browser 등 )에게 Cache를 하지 않도록 명시 할 수 있다. 웹 클라이언트의 경우에도 웹서버에 데이터를 요청할 때 중간 노드에cache 되지 않은 최신 데이터를 요청하고자 할때 이 Cache-Control 헤더를 이용하여 cache 된 정보를 사용하지 말라는 지시를 할 수 있다.

Cache-Control 헤더에 있는 directive는 기본 cache 알고리즘에 우선한다. Cache directive는 단방향이다. 이것은 HTTP request에 지정된 cache directive가 response에도 동일하게 있어야 하는 것은 아님을 의미한다.

주의: HTTP/1.0 은 Cache-Control을 구현하지 않고 Pragma: no-cache만을 구현하고 있다. 

 
response cache 관련 해더의 용도 

Jsp를 비롯한 웹 어플리케이션에서 DB가 추가되엇는데도 불가하고 웹브라우저의 출력된는
값이 변화지 않는경우가 있다.
그러한 이유중 하나는 cache를 사용여부에 따라서 발생할 수있다.
client에서 server에 요청을 할때 처음 실행 된다면  server에서는 그에 관련된 서블릿을 생성하고 중복된
생성을 하지 않도록 메모리에 로딩하여 이를 이용한다.
따라서 이후 에 발생하는 Client의 요청에는 기존에 생성되어진 서블릿에
접근하기 때문에 이러한 현상이 발생한다.

<%
response.setHeader("Pragma","No-cache");
<--  http 버전 1.0에서 지원하는 Prag-->
response.setHeader("Cache-Control","No-cache");
<--  http 버전 1.1에서 지원하는 Cache-Control 응답 해더.-->
%>

보다 빠른 응답속도를 요하는고 데이터의 가변이 많지 않을 경우,정적인 HTML등은  cache를 사용함으로써
속도개선에 많은 도움을 준다. 반대로 게시판과 같이 가변성이 잦은 용도의 HTML이라면 NO-cache 사용함이 좋음

===========================================================================================================

위와 같은 HTML 사용법이외에서 아래와 같이 meta tag를 사용하여 처리하는 방법도 있다.
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

===========================================================================================================

메타테그란?
메타테그란 검색엔진에 자신의 홈페이지에 관한 키워드를 제공
<head>와</head>사이에 넣어준다

메타테그예)
<meta name="Author" content="NOLS">                                 // Author:제작자의 이름이 NOLS라는 뜻
<meta name="Generator" content="Microsoft FrontPage 4.0">   // 페이지를 프론트 페이지로 제작
<meta name="Copyright" content="2003 RANGS">                   // 저작권에 관한 정보
<meta name="Keywords" content="html,tag,mata,메타,태그">  // 검색엔진에서 검색되는 키워드
<meta name="Description" content="META 태그에 관한 정보"> //페이지에 대한 정보
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> //문자 인코딩
<meta http-equiv="Refresh" content="60">                             //60초 마다 새로고침
<meta http-equiv="Refresh" ccontent="5;url=주소">                 //주소로 5초후 이동
<meta http-equiv="Pragma" content="no-cache">                  //캐쉬가 되지 않게
<meta http-equiv="Expires" content="Mon, 08 Sep 2003 10:10:10 GMT"> //캐쉬 만료(파기)일
<meta http-equiv="Page-Enter" content="revealtrans(duration=1,transition=12)">
//
페이지 들어갈때 트랜지션 효과(장면 전환 효과)
<meta http-equiv="Page-Exit" content="revealtrans(duration=1,transition=12)">
//
페이지 나갈때 트랜지션 효과(장면 전환 효과) 
<META HTTP-EQUIV="Imagetoolbar" content="no"> 
//
이미지 마우스 오버시 이미지툴바 생기지 않음