본 문서에서는 HTTP 헤더를 사용하여 Internet Explorer에서 웹 페이지의 캐싱을 제어하는 방법에 대해 설명합니다.

Microsoft Internet Information Server(IIS)를 사용하면 특정 ASP(Active Server Pages) 페이지의 맨 앞에 다음 스크립트를 사용하여 휘발성이 매우 높거나 매우 중요한 페이지를 쉽게 표시할 수 있습니다.
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

위로 가기

추가 정보

만료 및 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 태그에는 알려진 문제점이 적어도 하나 있습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
222064 (http://support.microsoft.com/kb/222064/) "Pragma: No-cache" 태그를 사용해도 페이지가 캐시될 수 있다

위로 가기

서버의 캐싱 옵션

ASP 페이지 이외의 페이지에서 Cache-Control 헤더를 사용해야 하는 경우에는 서버 구성의 옵션을 사용하여 이 헤더를 자동으로 추가해야 할 수 있습니다. HTTP 헤더를 특정 디렉터리의 서버 응답에 추가하는 프로세스는 해당 서버 설명서를 참조하십시오. 예를 들어, IIS 4에서는 다음과 같이 하십시오.
인터넷 서비스 관리자를 호출합니다.
컴퓨터와 서비스 트리를 사용하여 기본 웹 서버(또는 문제의 웹 서버)를 열고 Cache-Control 헤더가 필요한 콘텐츠가 들어 있는 디렉터리를 찾습니다.
해당 디렉터리의 등록 정보 대화 상자를 표시합니다.
HTTP 헤더 탭을 선택합니다.
사용자 지정 HTTP 헤더 그룹에서 추가 단추를 누른 다음 헤더 이름으로 "Cache-Control"을 추가하고 헤더 값으로 "no-cache"를 추가합니다.
전체 웹 서버에서 이 헤더를 사용하는 것은 좋지 않습니다. 클라이언트에서 절대로 캐시되지 않아야 하는 콘텐츠에만 이 헤더를 사용하십시오.

위로 가기

문제 검사 목록

본 문서에 나와 있는 방법을 적용했는데도 Internet Explorer와 캐싱에 문제가 있는 경우에는 Microsoft에 기술 지원을 요청하기 전에 다음과 같은 유용한 검사 목록을 단계별로 검토하십시오.
Cache-Control 헤더를 ASP "Response.CacheControl" 속성과 함께 사용하거나 반환된 HTTP 헤더를 통해 사용하고 있습니까? 이것은 Internet Explorer에서 캐싱을 완전히 방지하는 유일한 방법입니다.
Internet Explorer 4.01 서비스 팩 2 이상을 사용하고 있습니까? 이전 버전의 브라우저에서 캐싱을 완전히 방지하는 방법은 없습니다.
웹 서버에 HTTP 1.1이 설정되어 있고 Internet Explorer에 HTTP 1.1 응답을 반환 중인지 다시 확인했습니까? Cache-Control 헤더는 HTTP 1.0 응답에 적합하지 않습니다.
서버쪽에서 CGI/ISAPI/서블릿을 사용하는 경우, 특히 HTTP 헤더의 CRLF 종결과 관련하여 HTTP 1.1 사양을 정확하게 따르고 있습니까? 일반적으로 성능 면에서 Internet Explorer는 HTTP 1.1 사양을 위반하는 응답은 허용하지 않습니다. 이에 따라 대개 헤더가 무시되거나 예기치 않은 서버 오류 보고서가 만들어집니다.
HTTP 헤더의 철자가 정확합니까?

위로 가기

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
189409 (http://support.microsoft.com/kb/189409/) INFO: IIS 4.0에서 웹 페이지의 캐싱 제어
165150 (http://support.microsoft.com/kb/165150/) IIS와 IE에서 Pragma: No-cache를 사용하는 방법
HTTP/1.1에 대한 자세한 내용을 보려면 다음 웹 사이트를 방문하여 RFC 2616을 참조하십시오.
http://www.w3.org/Protocols/rfc2616/rfc2616.html (http://www.w3.org/Protocols/rfc2616/rfc2616.html)