방법: HTTP 헤더를 사용하여 여러 버전의 페이지 캐시

Visual Studio 2010

업데이트: 2007년 11월

ASP.NET을 사용하면 지정된 HTTP 헤더의 값에 따라 여러 버전의 페이지를 캐시할 수 있습니다. 페이지가 요청되면 응용 프로그램에 전달되는 단일 헤더, 여러 헤더 또는 모든 헤더별로 캐싱을 지정할 수 있습니다.

HTTP 헤더 값에 따라 여러 버전의 페이지를 선언적으로 캐시하려면

  1. ASP.NET 페이지에서 필수 DurationVaryByParam 또는 VaryByControl 특성과 함께 @ OutputCache 지시문을 포함합니다. Duration 특성은 0보다 큰 정수로 설정해야 합니다. HTTP 헤더 값으로만 캐시하려면 VaryByParam 특성을 "None"으로 설정해야 합니다.

  2. @ OutputCache 지시문에서 VaryByHeader 특성을 포함하고 이 특성의 값을 캐시 콘텐츠의 변경 기준으로 사용할 HTTP 헤더의 이름으로 설정합니다.

    다음 예제에서는 60초 동안 페이지를 캐시하고 Accept-Language HTTP 헤더와 함께 전달되는 값에 따라 여러 버전의 페이지를 캐시하도록 설정합니다.

    <%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
    
    a6s4ks5w.alert_note(ko-kr,VS.100).gif참고:

    캐시된 콘텐츠를 여러 헤더에 따라 변경하려면 세미콜론(;)으로구분된 헤더 이름 목록을 포함하고 모든 헤더 값에 따라 변경하려면 VaryByHeader 특성을 별표(*)로 설정합니다.

HTTP 헤더 값에 따라 여러 버전의 페이지를 프로그래밍 방식으로 캐시하려면

  1. 페이지의 Page_Load 메서드에서 해당 페이지의 Response 개체에 대한 Cache 속성에서 SetCacheabilitySetExpires 메서드를 호출합니다.

  2. 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
    
    a6s4ks5w.alert_note(ko-kr,VS.100).gif참고:

    캐시된 콘텐츠를 여러 헤더에 따라 변경하려면 VaryByHeaders 속성에 여러 개의 값을 설정해야 하고 모든 헤더에 따라 변경하려면 VaryByHeaders["VaryByUnspecifiedParameters"]를 true로 설정합니다.

표시: