HOWTO: Visual C# .NET을 사용하여 ASP.NET에서 페이지 출력 캐싱 제어

기술 자료 번역 기술 자료 번역
기술 자료: 308375 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR308375
모두 확대 | 모두 축소

이 페이지에서

요약

본 문서에서는 Visual C# .NET을 사용하여 ASP.NET에서 @ OutputCache 지시문으로 페이지 출력 캐싱을 제어하는 방법을 설명합니다. 이 방법을 사용하여 사이트에서 액세스가 가장 많이 이루어지는 페이지를 캐싱할 수 있으며 따라서 웹 서버 처리량을 충분하게 늘릴 수 있습니다. 일반적으로 처리량은 초당 요청 수로 측정합니다. 본 문서의 예제 코드는 DurationVaryByParam 특성을 사용하는 방법을 보여 주지만 @ OutputCache 지시문과 함께 사용할 수 있는 다른 방법에 대해서도 간단히 설명합니다.

참고: 본 문서에서는 모든 @ OutputCache 지시문의 특성과 용도를 자세히 다루지는 않습니다. 자세한 내용은 참조 절을 참조하십시오.

요구 사항

  • Microsoft Windows 2000 또는 Windows XP
  • Microsoft .NET Framework
  • Microsoft Internet Information Server(IIS)
  • ASP.NET Premium Edition

@ OutputCache 지시문 소개

@ OutputCache 지시문을 사용하여 페이지 출력 캐싱을 제어하려면 페이지 맨 위에 지시문을 추가하면 됩니다. Page.InitOutputCache 메서드가 지시문을 HttpCachePolicy 클래스 메서드로 변환합니다.

@ OutputCache 지시문은 다음과 같은 특성과 설정을 포함하고 있습니다.
  • Duration: 이 특성은 항목이 캐시에 보존되는 기간을 지정합니다. Duration의 값은 초 단위로 표시됩니다.
  • VaryByParam: 이 특성은 Get 또는 Post 매개 변수로 캐시 항목을 결정합니다. 예를 들어, testVal이라는 QueryString 변수가 VaryByParam 특성으로 설정된 경우 testVal에 대해 다른 값을 포함하고 있는 모든 페이지 요청은 별도의 페이지에 캐싱됩니다. 다음 코드는 VaryByParam 특성을 사용한 구문입니다.
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    참고: 항목의 모든 다른 버전이 캐싱되도록 별표(*)를 지정할 수 있습니다. 또한 캐싱된 항목의 버전이 하나뿐인 경우 "none"을 지정할 수도 있습니다.
  • Location: 이 특성은 항목을 캐싱할 위치를 결정합니다. 다음 위치를 지정할 수 있습니다.
    • Any
    • Client
    • Downstream
    • Server
    • None

    다음 코드는 Location 특성을 사용한 구문입니다.
    <%@ OutputCache Duration="Seconds" Location="Client" %>
  • 다음 코드는 VaryByCustom: 이 특성은 기본 설정으로 Browser를 포함하고 있습니다. 즉, 항목의 다른 인스턴스는 이를 요청하는 각각의 브라우저 버전에 대하여 캐싱됩니다. 예를 들어, Microsoft Internet Explorer 5와 Internet Explorer 5.5가 모두 항목을 요청합니다. VaryByCustomBrowser로 설정되면 각 브라우저 버전에 대한 캐시 항목이 존재합니다. 다른 사용자 지정 시나리오에 대한 캐싱을 제어하는 문자열은 제공할 수 없습니다. 문자열은 Global.asax 파일에 있는 HttpApplication.GetVaryByCustomString 메서드를 무시하는 코드를 제공하지 않는 경우 아무런 의미가 없습니다.

    다음 코드는 VaryByCustom 특성을 사용한 구문입니다.
    <%@ OutputCache Duration="Seconds" VaryByCustom="string" %>
  • 다음 코드는 VaryByHeader: 이 특성을 사용하면 다른 캐시 항목을 결정하는 기준으로 특정 HTTP 헤더 값을 지정할 수 있습니다. 다음 코드는 VaryByHeader 특성을 사용한 구문입니다.
    <%@ OutputCache Duration="60" VaryByHeader="Accept-Language" %>

@ OutputCache Duration 예제를 만드는 단계

다음 단계는 페이지 출력 캐싱을 위해 Duration 특성을 사용하여 항목을 캐싱하는 기간을 지정하는 방법을 보여줍니다.
  1. 다음과 같이 새로운 Visual Basic ASP.NET 웹 응용 프로그램 프로젝트를 만듭니다.
    1. Visual Studio .NET을 엽니다.
    2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 누릅니다.
    3. 새 프로젝트 추가 대화 상자의 프로젝트 형식에서 Visual C# 프로젝트를 누른 다음 템플릿에서 ASP.NET 웹 응용 프로그램을 누릅니다. 이름 입력란에 OutputCacheDemo를 입력한 다음 확인을 누릅니다.
  2. 다음과 같이 Visual Studio .NET에 새로운 .aspx 페이지를 만듭니다.
    1. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 누르고 추가를 누른 다음 Web Form 추가를 누릅니다.
    2. 이름 입력란에 OutputCacheDuration.aspx를 입력한 다음 열기를 누릅니다.
  3. Visual Studio .NET이 페이지에 추가하는 기본 코드를 삭제합니다.
  4. 다음 코드를 선택하여 강조하고 마우스 오른쪽 단추로 누른 다음 복사를 누릅니다. Visual Studio .NET에서 편집 메뉴의 HTML로 붙여넣기를 눌러 코드를 .aspx 페이지에 붙여넣습니다.
    <%@ OutputCache Duration="20" VaryByParam="none"%>
    <HTML>
       <HEAD>
       <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <STRONG>@ OutputCache Duration Sample</STRONG>
          <hr>
          <br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <br>
       </body>
    </HTML>
  5. 파일 메뉴에서 다른 이름으로 OutputCacheDuration.aspx 저장을 눌러 페이지를 저장합니다.
  6. IDE(통합 개발 환경)의 빌드 메뉴에서 빌드를 누릅니다.
  7. 예제를 실행하려면 솔루션 탐색기에서 OutputCacheDuration.aspx를 마우스 오른쪽 단추로 누른 다음 브라우저에서 보기를 누릅니다.
  8. 브라우저에 페이지가 나타난 후에 레이블에 나타나는 시간을 기록해 둡니다.
  9. 브라우저에서 페이지를 새로 고칩니다. 시간이 이전과 같은지 확인합니다. 20초의 기간 설정이 만료된 후에 페이지를 새로 고친 경우 페이지지의 새로 캐싱된 버전이 표시됩니다.

    참고: 외부 브라우저에서 페이지를 보는 경우 F5 키를 눌러 페이지를 새로 고칠 수 있습니다. Visual Studio .NET IDE 내부 브라우저에서 페이지를 보는 경우 페이지를 마우스 오른쪽 단추로 누른 다음 새로 고침을 눌러 페이지를 새로 고칩니다.

@ OutputCache VaryByParam 예제를 만드는 단계

다음 단계는 페이지 출력 캐싱에 VaryByParam 특성을 사용함으로써 QueryString 변수 값 중 하나에 따라 캐싱된 페이지의 다른 버전이 존재하도록 하는 방법을 보여줍니다.
  1. 다음과 같이 Visual Studio .NET에 새로운 .aspx 페이지를 만듭니다.
    1. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 누르고 추가를 누른 다음 Web Form 추가를 누릅니다.
    2. 이름 입력란에 OutputCacheVaryByParam.aspx를 입력한 다음 열기를 누릅니다.
  2. 기본적으로 Visual Studio .NET이 페이지에 추가하는 기본 코드를 삭제합니다.
  3. 다음 코드를 선택하여 강조하고 마우스 오른쪽 단추로 누른 다음 복사를 누릅니다. Visual Studio .NET에서 편집 메뉴의 HTML로 붙여넣기를 눌러 코드를 .aspx 페이지에 붙여넣습니다.
    <%@ OutputCache Duration="20" VaryByParam="testVal"%>
    <HTML>
       <HEAD>
          <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <P>
             <STRONG>@ OutputCache VaryByParam Sample</STRONG>
          </P>
          <P>
             <hr>
          </P>
          <P>
             <br>
             <asp:Label id="Label1" runat="server"></asp:Label>
             <br>
             <hr>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=123">testVal(123)</a>
             <br>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=345">testVal(345)</a>
          </P>
       </body>
    </HTML>
    참고: 앞 코드에서 두 하이퍼링크를 수정하여 웹 서버의 이름을 반영해야 합니다. 또한 VaryByParam 특성이 QueryString 변수 testVal의 값에 따라 달라지도록 설정되는 것을 확인할 수 있습니다. 따라서 testValQueryString 변수 값이 동일한 각 인스턴스에 대해 페이지 출력이 캐싱됩니다.
  4. 파일 메뉴에서 다른 이름으로 OutputCacheVaryByParam.aspx 저장을 눌러 페이지를 저장합니다.
  5. IDE의 빌드 메뉴에서 빌드를 누릅니다.
  6. 예제를 실행하려면 솔루션 탐색기에서 OutputCacheVaryByParam.aspx를 마우스 오른쪽 단추로 누른 다음 브라우저에서 보기를 누릅니다.
  7. 페이지가 브라우저에 나타난 후에 testVal(123)을 누릅니다. 이렇게 하면 브라우저가 페이지를 다시 탐색하지만 QueryString 변수 testVal"123"으로 설정됩니다. 나타나는 시간을 기록해 둡니다.
  8. testVal(123)을 다시 누릅니다. 시간이 이전과 같은지 확인합니다. 페이지 출력이 testVal 변수 값에 따라 캐싱되었습니다.
  9. testVal(345)을 누릅니다. 새로운 시간이 페이지에 나타납니다.
  10. testVal(345)을 다시 누릅니다. 이전 페이지 출력이 캐싱되고 브라우저에 표시됩니다.
  11. testVal(123)을 눌러 첫번째 인스턴스로 돌아갑니다. 제공된 QueryString 변수 값에 따라 다른 페이지 출력 캐시 버전이 나타납니다.

문제 해결

  • VaryByParam을 사용할 때 QueryString 변수의 대/소문자를 변경하면 캐시 항목이 추가될 수 있습니다.
  • Duration이 초 단위로 지정되었는지 확인하십시오.
  • VaryByCustom을 사용하고 Global.asax 파일에서 HttpApplication.GetVaryByCustomString 메서드를 무시하면 특성과 함께 제공된 사용자 지정 문자열과 일치하는 항목이 발견되지 않을 경우 Browser의 기본 설정이 사용됩니다.

참조

페이지 출력 캐싱에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
GotDotNet 페이지 출력 캐싱 QuickStart 자습서
http://gotdotnet/quickstart/aspplus/doc/outputcaching.aspx

Microsoft .NET Framework SDK(Software Development Kit)
http://msdn.microsoft.com/library/en-us/dnanchor/html/netfxanchor.asp

ASP.NET 페이지 캐싱
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspcachingfeatures.asp

@ OutputCache
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconoutputcache.asp

속성

기술 자료: 308375 - 마지막 검토: 2006년 11월 7일 화요일 - 수정: 3.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP .NET(.NET Framework에 포함)
  • Microsoft Visual C# .NET 2002 Standard Edition
키워드:?
kbhowto kbhowtomaster kbgrpdsasp KB308375

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com