@ OutputCache
업데이트: 2007년 11월
ASP.NET 페이지 또는 페이지에 들어 있는 사용자 정의 컨트롤에 대한 출력 캐시 정책을 선언형으로 제어합니다. 출력 캐시에 대한 자세한 내용은 ASP.NET 캐싱을 참조하십시오.
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
%>
특성
Duration
페이지 또는 사용자 정의 컨트롤이 캐싱되는 데 걸리는 시간(초)입니다. 페이지 또는 사용자 정의 컨트롤에 이 특성을 설정하면 개체로부터의 HTTP 응답에 대한 만료 정책이 설정되어 페이지 또는 사용자 정의 컨트롤 출력이 자동으로 캐싱됩니다.참고
이 특성은 필수입니다. 이 특성을 사용하지 않으면 파서 오류가 발생합니다.
Location
OutputCacheLocation 열거형 값 중 하나입니다. 기본값은 Any입니다.참고
사용자 정의 컨트롤(.ascx 파일)에 포함된 @ OutputCache 지시문에는 이 특성을 사용할 수 없습니다.
CacheProfile
페이지와 연결할 캐시 설정의 이름입니다. 이 특성은 선택적 요소이며 기본값으로 빈 문자열("")이 지정됩니다.참고
사용자 정의 컨트롤(.ascx 파일)에 포함된 @ OutputCache 지시문에는 이 특성을 사용할 수 없습니다. 페이지에 지정하는 경우 이 값은 outputCacheSettings 섹션의 outputCacheProfiles 요소에서 사용 가능한 항목 중 하나의 이름과 일치해야 합니다. 이 이름이 프로필 항목과 일치하지 않으면 예외가 throw됩니다.
NoStore
중요한 정보를 보조 저장소에 둘지 여부를 결정하는 부울 값입니다.참고
사용자 정의 컨트롤(.ascx 파일)에 포함된 @ OutputCache 지시문에는 이 특성을 사용할 수 없습니다. 이 특성을 true로 설정하면 요청 중에 다음 코드를 실행하는 것과 결과가 같습니다.
Response.Cache.SetNoStore();
Shared
여러 페이지에서 사용자 정의 컨트롤 출력을 공유할 수 있는지 여부를 결정하는 부울 값입니다. 기본값은 false입니다. 자세한 내용은 설명 부분을 참조하십시오.참고
ASP.NET 페이지(.aspx 파일)에 포함된 @ OutputCache 지시문에는 이 특성을 사용할 수 없습니다.
SqlDependency
페이지 또는 컨트롤의 출력 캐시가 종속되는 데이터베이스/테이블 이름 쌍의 집합을 식별하는 문자열 값입니다. SqlCacheDependency 클래스는 출력 캐시가 종속되는 데이터베이스 테이블을 모니터링하므로 테이블 기반 폴링을 사용하는 경우에는 테이블의 항목이 업데이트되면 해당 항목이 캐시에서 제거됩니다. Microsoft SQL Server 2005에서 CommandNotification 값이 설정된 알림을 사용하는 경우 SqlDependency 클래스는 SQL Server 2005 서버에 쿼리 알림을 등록하는 데 사용됩니다.참고
SqlDependency 특성의 CommandNotification 값은 웹 페이지(.aspx)에만 사용할 수 있습니다. 사용자 정의 컨트롤은 @ OutputCache 지시문에 테이블 기반 폴링만 사용할 수 있습니다.
VaryByCustom
사용자 지정 출력 캐싱 요구 사항을 나타내는 텍스트입니다. 이 특성의 값을 browser로 설정하면 브라우저 이름과 주 버전 정보에 따라 캐시가 달라집니다. 사용자 지정 문자열을 입력한 경우에는 응용 프로그램의 Global.asax 파일에서 GetVaryByCustomString 메서드를 재정의해야 합니다.VaryByHeader
출력 캐시를 변경하는 데 사용되는 HTTP 헤더 목록이며 세미콜론으로 구분되어 있습니다. 이 특성에 대해 헤더를 여러 개 설정하는 경우 출력 캐시에는 지정된 각 헤더 조합에 대해 요청된 문서의 다양한 버전이 포함됩니다.참고
VaryByHeader 특성을 설정하면 ASP.NET 캐시뿐만 아니라 HTTP 버전 1.1의 모든 캐시에 포함된 항목을 캐싱할 수 있습니다. 사용자 정의 컨트롤의 @ OutputCache 지시문에는 이 특성을 사용할 수 없습니다.
VaryByParam
출력 캐시를 변경하는 데 사용되는 문자열 목록이며 세미콜론으로 구분되어 있습니다. 기본적으로 이러한 문자열은 GET 메서드 특성을 사용하여 보낸 쿼리 문자열 값 또는 POST 메서드를 사용하여 보낸 매개 변수에 해당합니다. 이 특성에 대해 매개 변수를 여러 개 설정하는 경우 출력 캐시에는 지정된 각 매개 변수 조합에 대해 요청된 문서의 다양한 버전이 포함됩니다. none, 별표(*), 유효한 쿼리 문자열 또는 POST 매개 변수 이름과 같은 값을 사용할 수 있습니다.경고
ASP.NET 페이지와 사용자 정의 컨트롤에서 @ OutputCache 지시문을 사용하는 경우 이 특성 또는 VaryByControl 특성이 필요합니다. 이 특성을 사용하지 않으면 파서 오류가 발생합니다. 캐시된 내용을 변경할 매개 변수를 지정하지 않으려면 이 값을 none으로 설정합니다. 모든 매개 변수 값에 따라 출력 캐시를 변경하려면 이 특성을 별표(*)로 설정합니다.
VaryByControl
사용자 정의 컨트롤의 출력 캐시를 변경하는 데 사용되는 문자열 목록이며 세미콜론으로 구분되어 있습니다. 이러한 문자열은 사용자 정의 컨트롤에 선언된 ASP.NET 서버 컨트롤의 ID 속성 값을 나타냅니다. 자세한 내용은 ASP.NET 페이지의 부분 캐싱을 참조하십시오.참고
ASP.NET 페이지와 사용자 정의 컨트롤에서 @ OutputCache 지시문을 사용하는 경우 이 특성 또는 VaryByParam 특성이 필요합니다.
VaryByContentEncodings
출력 캐시를 변경하는 데 사용되는 문자열 목록이며 세미콜론으로 구분되어 있습니다. VaryByContentEncodings 특성을 Accept-Encoding 헤더와 함께 사용하면 다양한 콘텐츠 인코딩에 대해 캐시된 응답이 제공되는 방식을 결정할 수 있습니다. Accept-Encoding 헤더를 지정하는 방법에 대한 자세한 내용은 W3C 웹 사이트에서 Hypertext Transfer Protocol -- HTTP/1.1 사양의 14.3 단원을 참조하십시오.
설명
페이지 출력 캐시의 값을 설정하는 것은 Cache 속성을 사용하여 SetExpires 및 SetCacheability 메서드를 조작하는 것과 동일합니다.
사용자가 Web Forms 페이지를 볼 수 있는 권한이 필요한 경우 출력 캐시는 Cache-Control HTTP 헤더를 private으로 설정합니다. 이러한 모든 주제에 대한 자세한 내용은 ASP.NET 페이지 캐싱을 참조하십시오.
Shared 특성을 true로 설정하면 캐시된 사용자 정의 컨트롤 출력을 여러 Web Forms 페이지에서 액세스할 수 있습니다. 이 특성을 true로 설정하지 않으면 기본적으로 사용자 정의 컨트롤이 포함된 각 페이지에 대해 사용자 정의 컨트롤 출력의 버전 하나가 캐시됩니다. Shared 특성을 활성화하여 많은 양의 메모리를 절약할 수 있습니다. 자세한 내용은 ASP.NET 페이지의 부분 캐싱을 참조하십시오.
예제
다음 코드 예제에서는 페이지 또는 사용자 정의 컨트롤의 출력이 캐시되는 기간을 설정하는 방법을 보여 줍니다.
<%@ OutputCache Duration="100" VaryByParam="none" %>
다음 코드 예제에서는 폼의 POST 메서드나 쿼리 문자열에서 위치 및 개수 폼 매개 변수를 기준으로 페이지 또는 사용자 정의 컨트롤을 캐시하도록 출력 캐시에 지정하는 방법을 보여 줍니다. 위치 또는 개수 매개 변수(또는 둘 모두)가 서로 다른 각 HTTP 요청은 10초 동안 캐싱되며 매개 변수 값이 동일한 모든 요청에 대해서는 항목이 만료될 때까지 해당 캐시가 사용될 수 있습니다.
<%@ OutputCache Duration="10" VaryByParam="location;count" %>