방법: HTTP 헤더를 사용하여 여러 버전의 페이지 캐시
업데이트: 2007년 11월
ASP.NET을 사용하면 지정된 HTTP 헤더의 값에 따라 여러 버전의 페이지를 캐시할 수 있습니다. 페이지가 요청되면 응용 프로그램에 전달되는 단일 헤더, 여러 헤더 또는 모든 헤더별로 캐싱을 지정할 수 있습니다.
HTTP 헤더 값에 따라 여러 버전의 페이지를 선언적으로 캐시하려면
ASP.NET 페이지에서 필수 Duration과 VaryByParam 또는 VaryByControl 특성과 함께 @ OutputCache 지시문을 포함합니다. Duration 특성은 0보다 큰 정수로 설정해야 합니다. HTTP 헤더 값으로만 캐시하려면 VaryByParam 특성을 "None"으로 설정해야 합니다.
@ OutputCache 지시문에서 VaryByHeader 특성을 포함하고 이 특성의 값을 캐시 콘텐츠의 변경 기준으로 사용할 HTTP 헤더의 이름으로 설정합니다.
다음 예제에서는 60초 동안 페이지를 캐시하고 Accept-Language HTTP 헤더와 함께 전달되는 값에 따라 여러 버전의 페이지를 캐시하도록 설정합니다.
<%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
참고: 캐시된 콘텐츠를 여러 헤더에 따라 변경하려면 세미콜론(;)으로구분된 헤더 이름 목록을 포함하고 모든 헤더 값에 따라 변경하려면 VaryByHeader 특성을 별표(*)로 설정합니다.
HTTP 헤더 값에 따라 여러 버전의 페이지를 프로그래밍 방식으로 캐시하려면
페이지의 Page_Load 메서드에서 해당 페이지의 Response 개체에 대한 Cache 속성에서 SetCacheability 및 SetExpires 메서드를 호출합니다.
VaryByHeaders 속성에서 HTTP 헤더의 값을 true로 설정합니다.
다음 코드 예제에서는 각각 다른 Accept-Language HTTP 헤더 값을 설정한 요청에 따라 페이지의 여러 버전을 1분 동안 캐시하는 방법을 보여 줍니다.
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByHeaders["Accept-Language"] = true; }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.VaryByHeaders("Accept-Language") = true End Sub
참고: 캐시된 콘텐츠를 여러 헤더에 따라 변경하려면 VaryByHeaders 속성에 여러 개의 값을 설정해야 하고 모든 헤더에 따라 변경하려면 VaryByHeaders["VaryByUnspecifiedParameters"]를 true로 설정합니다.
참고 항목
작업
방법: 선언적으로 ASP.NET 페이지의 캐시 가능성 설정
방법: 요청 브라우저를 사용하여 여러 버전의 페이지 캐시
방법: 사용자 지정 문자열을 사용하여 여러 버전의 페이지 캐싱