여러 버전의 사용자 정의 컨트롤 출력 캐싱

Visual Studio 2010

업데이트: 2007년 11월

출력 캐시된 페이지 버전을 변경할 수 있는 것처럼 사용자 정의 컨트롤이 포함된 페이지 영역을 출력 캐싱할 수 있습니다. 사용자 정의 컨트롤 출력을 컨트롤 이름 및 GET 쿼리 문자열 또는 폼 POST 매개 변수 값에 따라 변경하거나 매개 변수 값만 기준으로 변경하여 이 작업을 수행할 수 있습니다. 페이지에 있는 여러 버전의 사용자 정의 컨트롤은 포함하는 .aspx 파일에서 두 번 이상 선언하여 캐싱할 수도 있습니다. 사용자가 사용자 정의 컨트롤에 대해 출력 캐싱을 지정하는지 여부와 관계없이, 코드 숨김 클래스에서 사용자 정의 컨트롤을 개발할 때 이러한 기술을 .ascx 파일의 @ OutputCache 지시문이나 PartialCachingAttribute 특성에 사용할 수 있습니다.

사용자 정의 컨트롤에 대한 @ OutputCache 지시문에서는 VaryByParam, VaryByCustom, VaryByControlShared의 네 가지 특성을 지원합니다. PartialCachingAttribute 클래스에는 코드 숨김 클래스에서 사용자 정의 컨트롤에 특성을 추가하여 동일한 기술을 사용할 수 있도록 하는 VaryByParams, VaryByControls, VaryByCustomShared의 네 가지 속성이 포함됩니다.

출력 캐싱 설정이 있는 사용자 정의 컨트롤이 포함된 ASP.NET 페이지를 처음 요청하면 컨트롤의 출력 인스턴스가 메모리에 저장됩니다. 기본적으로 동일한 사용자 정의 컨트롤이 포함된 각 페이지에서 요청될 때 컨트롤 출력의 또 다른 인스턴스가 메모리에 추가됩니다.

예를 들어, 출력 캐시 설정이 있는 Sample.ascx라는 사용자 정의 컨트롤을 만들어 응용 프로그램의 ASP.NET 페이지 25개에 Sample.ascx를 추가하면 최소한 출력 캐시에 저장된 수만큼의 Sample.ascx 버전이 존재하게 될 것입니다. 또한 VaryByControl, VaryByCustom 또는 VaryByParam 특성을 사용하여 사용자 정의 컨트롤의 캐싱 동작을 수정하면 캐시에 훨씬 더 많은 버전의 사용자 정의 컨트롤 출력이 있을 수 있습니다. 예를 들어, TextBox 웹 서버 컨트롤을 사용자 정의 컨트롤에 포함시키고 ID 속성을 MyTextBox로 설정할 수 있습니다. VaryByControl 특성을 MyTextBox로 설정하면 MyTextBox 컨트롤에서 받는 모든 값에 대한 사용자 정의 컨트롤 출력 버전이 캐시에 저장됩니다.

같은 응용 프로그램의 여러 페이지에서 같은 사용자 정의 컨트롤을 사용하면 사용자 정의 컨트롤의 @ OutputCache 지시문에 대한 Shared 특성을 true로 설정하거나 컨트롤의 PartialCachingAttribute 특성에 있는 Shared 속성을 true로 설정하여 메모리를 절약할 수 있습니다. 즉, 각 페이지에서 사용자 정의 컨트롤 출력의 같은 인스턴스에 액세스하게 됩니다. 일반적으로 사용되고 자주 캐싱되는 사용자 정의 컨트롤에 Shared 속성을 사용하면 메모리 용량을 크게 절약할 수 있습니다.

사용자 정의 컨트롤 출력을 출력 캐시에 추가하는 작업과 페이지 출력에 추가하는 작업 간에는 주요 차이점이 있습니다. 두 가지 모두에 대한 출력 캐시의 경우 GET 쿼리 문자열과 폼 POST 매개 변수를 사용하여 출력의 여러 버전을 만들고 캐싱할 수 있는 반면 사용자 정의 컨트롤의 경우 HTTP 헤더를 기반으로 하는 캐싱을 지원하지 않습니다.

출력 캐시된 사용자 정의 컨트롤은 다음 네 가지 기술을 통해 변경할 수 있습니다.

  • 페이지 출력 캐싱에 대해 제공되는 것과 같은 기능을 제공하는 VaryByParam 특성이나 PartialCachingAttribute 클래스의 VaryByParams 속성을 사용할 수 있습니다. 어떤 문자열로도 설정할 수 있지만 만드는 사용자 정의 컨트롤과 연관된 GET 쿼리 문자열이나 폼 POST 매개 변수와 같도록 해야 합니다.

  • 출력 캐시된 사용자 정의 컨트롤을 사용자 정의 컨트롤에 포함된 ASP.NET 서버 컨트롤의 ID 속성에 따라 변경할 때 VaryByControl 특성 또는 PartialCachingAttribute 클래스의 VaryByControls 속성을 사용할 수 있습니다.

  • 캐시된 사용자 정의 컨트롤 출력을 변경하려는 사용자 지정 문자열에 대한 코드를 정의할 때 VaryByCustom 특성 또는 PartialCachingAttribute 클래스의 VaryByCustom 속성을 사용할 수 있습니다. 이 내용은 페이지 출력 캐싱 변경에 사용되는 VaryByControl 특성 기술과 같은 방식으로 적용됩니다. 자세한 내용은 방법: 사용자 지정 문자열을 사용하여 여러 버전의 페이지 캐싱을 참조하십시오.

  • ASP.NET 페이지에 사용자 정의 컨트롤의 여러 인스턴스를 포함시킬 수 있습니다. @ OutputCache 지시문의 Shared 특성을 true로 설정하지 않으면 컨트롤의 각 인스턴스 출력이 캐시됩니다.

이러한 각 항목에 대한 자세한 내용은 방법: 매개 변수를 기반으로 여러 버전의 사용자 정의 컨트롤 캐시방법: 선언적 특성을 사용하여 여러 버전의 사용자 정의 컨트롤 캐시를 참조하십시오.

표시: