다음을 통해 공유


캐시된 페이지의 일부를 동적으로 업데이트

업데이트: 2007년 11월

페이지를 캐시하면 웹 응용 프로그램의 성능을 크게 향상시킬 수 있습니다. 그러나 경우에 따라 페이지의 대부분을 캐시하고 페이지 내의 일부를 동적으로 유지해야 할 수도 있습니다. 예를 들어 지정한 기간 동안 완전히 정적인 뉴스 기사 페이지를 만드는 경우 전체 페이지를 캐시하도록 설정할 수 있습니다. 페이지를 요청할 때마다 변경되는 회전 광고 배너를 포함하려는 경우 페이지에서 광고가 포함된 부분이 동적이어야 합니다.

페이지를 캐시하지만 일부 콘텐츠를 동적으로 대체할 수 있게 하려면 ASP.NET의 캐시 후 대체를 사용하면 됩니다. 캐시 후 대체 기능을 사용하면 전체 페이지가 캐시되고 특정 부분은 캐시할 수 없는 것으로 표시됩니다. 광고 배너 예제의 경우 AdRotator 컨트롤을 사용하면 각 사용자에 대해 페이지를 새로 고칠 때마다 광고가 동적으로 만들어지도록 캐시 후 대체 기능을 사용할 수 있습니다.

다음과 같은 세 가지 방법을 사용하여 캐시 후 대체 기능을 구현할 수 있습니다.

  • Substitution 컨트롤을 사용하여 선언적으로 구현

  • Substitution 컨트롤 API를 사용하여 프로그래밍 방식으로 구현

  • AdRotator 컨트롤을 사용하여 암시적으로 구현

Substitution 컨트롤

ASP.NET Substitution 컨트롤은 캐시된 페이지에서 캐시되지 않고 동적으로 만들어지는 섹션을 지정합니다. 페이지에서 동적 콘텐츠를 나타낼 위치에 Substitution 컨트롤을 배치합니다.

런타임에 Substitution 컨트롤은 MethodName 속성을 사용하여 지정한 메서드를 호출합니다. 이 메서드는 문자열을 반환해야 하고 그런 다음 Substitution 컨트롤의 콘텐츠를 대체합니다. 메서드는 상위 Page 또는 UserControl 컨트롤에서 정적 메서드여야 합니다.

Substitution 컨트롤을 사용하면 클라이언트측 캐시 가능성이 서버 캐시 가능성으로 변경되므로 클라이언트에서 페이지가 캐시되지 않습니다. 이로 인해 이후에 페이지를 요청하면 메서드가 다시 호출되어 동적 콘텐츠가 생성됩니다.

Substitution API

캐시된 페이지의 동적 콘텐츠를 프로그래밍 방식으로 만들려면 페이지 코드에서 WriteSubstitution 메서드를 호출하고 메서드 이름을 매개 변수로 전달합니다. 동적 콘텐츠 만들기를 처리하는 메서드에서는 단일 HttpContext 매개 변수를 사용하고 문자열을 반환합니다. 반환 문자열은 지정된 위치에서 대체될 콘텐츠입니다. Substitution 컨트롤을 선언적으로 사용하는 대신 WriteSubstitution 메서드를 호출하면 Page 또는 UserControl 개체의 정적 메서드를 호출하지 않고 임의의 개체에 대한 메서드를 호출할 수 있다는 이점이 있습니다.

WriteSubstitution 메서드를 호출하면 클라이언트측 캐시 가능성이 서버 캐시 가능성으로 변경되므로 클라이언트에서 페이지가 캐시되지 않습니다. 이로 인해 이후에 페이지를 요청하면 메서드가 다시 호출되어 동적 콘텐츠가 생성됩니다.

AdRotator 컨트롤

AdRotator 서버 컨트롤은 캐시 후 대체 기능에 대한 지원을 내부적으로 구현합니다. 페이지에 AdRotator 컨트롤을 배치하면 이 컨트롤은 부모 페이지의 캐시 여부에 관계없이 각 요청에 대해 고유한 광고를 렌더링합니다. 따라서 AdRotator 컨트롤이 포함된 페이지는 서버측에서만 캐시됩니다.

참고 항목

개념

ASP.NET 캐싱 개요

ASP.NET 페이지 캐싱

여러 버전의 페이지 캐싱

ASP.NET 페이지의 부분 캐싱

응용 프로그램 데이터 캐싱

ASP.NET에서 SqlCacheDependency 클래스를 사용한 캐싱