방법: 매개 변수를 사용하여 여러 버전의 페이지 캐싱
업데이트: 2007년 11월
페이지를 캐시하려고 하지만 쿼리 문자열 매개 변수 값이나 다시 게시할 때 페이지와 함께 전송된 값을 기반으로 페이지에서 다른 출력을 생성할 수 있습니다. 예를 들어, 사용자의 시/도를 기반으로 저장소 위치를 표시하는 페이지가 있을 경우 이 페이지는 각 시/도에 대해 다른 버전의 페이지를 생성하는 "시/도" 쿼리 문자열 값을 받아들일 수 있습니다.
쿼리 문자열 값이나 폼 게시 값으로 전송된 매개 변수를 기반으로 여러 버전의 페이지 응답을 캐시할 수 있습니다.
참고: |
---|
ASP.NET은 매개 변수가 전달되는 순서에 관계없이 캐싱을 위해 동일한 키/값 쌍을 가진 쿼리 문자열 값이나 폼 게시 값을 동일한 것으로 처리합니다. 그러나 캐싱을 위해 매개 변수 이름은 대/소문자를 구분하며 ASP.NET에서는 대문자 및 소문자 매개 변수 이름과 값에 대해 서로 다른 버전의 페이지를 캐시합니다. |
매개 변수를 사용하여 선언적으로 여러 버전의 페이지 출력을 캐시하려면
ASP.NET 페이지에서 Duration 특성을 가진 @ OutputCache 지시문을 포함합니다. Duration 특성은 필수이며 0보다 큰 정수로 설정해야 합니다.
@ OutputCache 지시문에 VaryByParam 특성을 포함하고 이 특성의 값을 페이지 변경 기준으로 사용할 쿼리 문자열이나 폼 게시 매개 변수의 이름으로 설정합니다.
다음 코드 예제에서는 60초 동안 페이지를 캐시하며 City 쿼리 문자열 값이나 폼 게시 매개 변수를 기반으로 여러 버전의 페이지 출력이 캐시되도록 지정합니다.
<%@ OutputCache Duration="60" VaryByParam="City" %>
참고: 출력 캐시를 여러 매개 변수에 따라 변경하려면 세미콜론(;)으로 구분된 매개 변수 이름 목록을 포함하고 모든 매개 변수 값에 따라 변경하려면 VaryByParam 특성을 별표(*)로 설정합니다. 다음 코드 예제에서는 City 및 ZipCode 매개 변수에 따라 페이지 출력이 변경되는 방법을 보여 줍니다.
매개 변수를 사용하여 프로그래밍 방식으로 여러 버전의 페이지 출력을 캐시하려면
페이지의 Page_Load 이벤트에서 Response 개체의 Cache 속성에 대해 SetCacheability 및 SetExpires 메서드를 호출합니다.
매개 변수 이름을 Response 개체의 VaryByParams 속성에 대한 인수로 지정하고 이 속성을 true로 설정합니다.
다음 코드 예제에서는 각기 다른 Zip 매개 변수 값을 가진 요청이 서버에 도착할 때 여러 버전의 페이지를 캐시하는 방법을 보여 줍니다.
Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByParams["Zip"] = true;
Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.VaryByParams("Zip") = True
참고: 캐시된 내용을 여러 매개 변수에 따라 변경하려면 VaryByParams 속성을 여러 번 설정합니다. 모든 헤더 값에 따라 변경하려면 VaryByHeader 특성을 별표(*)로 설정합니다. 다음 코드 예제에서는 City 및 Zip 매개 변수에 따라 페이지 출력이 변경되는 방법을 보여 줍니다.
참고 항목
작업
방법: 선언적으로 ASP.NET 페이지의 캐시 가능성 설정
방법: 요청 브라우저를 사용하여 여러 버전의 페이지 캐시
방법: HTTP 헤더를 사용하여 여러 버전의 페이지 캐시
방법: 사용자 지정 문자열을 사용하여 여러 버전의 페이지 캐싱