C#.NET을 사용 하 여 ASP.NET에서 캐시 되는 페이지 출력을 제어 하는 방법

요약

이 문서에서는 NET C#을 사용 하 여 ASP.NET에서 캐시 된 페이지 출력을 제어 하려면 @ OutputCache 지시문을 사용 하는 방법을 보여 줍니다. 이 방법은 웹 서버의 처리량을 늘릴 수 있습니다 사이트의 가장 자주 액세스 페이지를 캐시에 사용할 수 있습니다. 처리량은 보통 초당 요청 단위로 지정 합니다. 이 문서의 예제 코드는 기간VaryByParam 특성을 사용 하는 방법을 보여줍니다, 하지만 문서에도 @ OutputCache 지시문을 사용 하 여 사용할 수 있는 방법 들에 대 한 간단한 설명을 포함 됩니다.

참고:이 문서에서는 모든 @ OutputCache 지시문 특성과 가능한 사용 방법을 상세하게 설명 함을 아닙니다. 자세한 내용은 " 참조 " 절을 참조 하십시오.

맨 위로

요구 사항

  • Microsoft Windows 2000 또는 Windows XP
  • Microsoft.NET Framework
  • Microsoft 인터넷 정보 서버 (IIS)
  • Microsoft ASP.NET
맨 위로

소개 하는 @ OutputCache 지시문

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

@ OutputCache 지시문에는 다음과 같은 속성 및 설정을 포함 됩니다.
  • 기간:이 특성은 지정 된 시간 항목이 캐시에 보관 합니다. 기간 (초)에 나열 됩니다.
  • VaryByParam:이 특성 Get 또는 Post 매개 변수에 따라 캐시 항목을 결정 합니다. 예를 들어, 쿼리 문자열 변수는 testVal 이라는 설정 됩니다 VaryByParam 특성에 다른 값을 포함 하는 모든 페이지 요청에 대 한
    별도 페이지에 testVal 캐시 됩니다. 다음 코드에는 VaryByParam 특성에 대 한 구문을 보여 줍니다.
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    참고: 항목의 모든 다른 버전을 캐시할 수 있도록 별표 (*)를 지정할 수 있습니다. 또한, 존재 하는 한 가지 버전의 캐시 된 항목이 하나만 있는 경우 "none" 지정할 수 있습니다.
  • 위치:이 특성 항목이 캐시 위치를 결정 합니다. 다음 위치를 지정할 수 있습니다.
    • 모든
    • 클라이언트
    • 다운스트림
    • 서버
    • 없음

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

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

@ OutputCache 기간 예제를 만드는 단계

다음 단계는 페이지 출력 캐싱 기간을 지정 하려면 항목을 캐시 하도록 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에서.aspx 페이지에 코드를 붙여넣을 편집 메뉴 HTML로 붙여넣기 를 눌러.
    <%@ 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 예제를 만드는 단계

다음 단계는 페이지 출력 캐싱 페이지의 캐시 된 버전을 다른 수 있도록 QueryString 변수 값의 값에 따라 존재 VaryByParam 특성을 사용 하는 방법을 보여줍니다.
  1. Visual Studio.NET에서 다음과 같이 새.aspx 페이지를 만듭니다.
    1. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭 하 고 추가클릭 한 다음 Web Form 추가클릭.
    2. 이름 텍스트 상자에 입력
      OutputCacheVaryByParam.aspx을 선택한 다음 열기를 클릭 합니다.
  2. 기본적으로 페이지에 추가 하는 Visual Studio.NET의 기본 코드를 삭제 합니다.
  3. 다음 코드 선택한 코드를 마우스 오른쪽 단추로 클릭 한 다음 복사를 클릭 합니다. Visual Studio.NET에서.aspx 페이지에 코드를 붙여넣을 편집 메뉴 HTML로 붙여넣기 를 눌러.
    <%@ 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 특성으로 설정 되어 있는지 다 testVal QueryString 변수 값에 따라 볼 수 있습니다. 이렇게 하면 페이지 출력이 testVal QueryString 변수 값은 동일한 각 인스턴스에 대 한 캐시 됩니다.
  4. 파일 메뉴에서 페이지를 저장 하려면 OutputCacheVaryByParam.aspx 저장 클릭 합니다.
  5. IDE에서 빌드 메뉴에서 빌드를 클릭 합니다.
  6. 샘플을 실행 하려면 솔루션 탐색기에서 OutputCacheVaryByParam.aspx 마우스 오른쪽 단추로 클릭 한 다음 브라우저에서 보기를 클릭 합니다.
  7. 페이지가 브라우저에 나타나면 testval (123)을누릅니다. 그러면 브라우저 하지만 testVal 변수 "123"로 설정 하면 쿼리 문자열 을 페이지에 다시 찾으려고 합니다. 나타나는 시간을 기록해 둡니다.
  8. Testval (123)를 다시 클릭 합니다. 시간을 동일 이전 공지 합니다. 페이지 출력이 testVal 변수 값에 따라 캐싱 되었기.
  9. TestVal(345)를 클릭 합니다. 새로운 시간이 페이지에 나타나는지 확인 합니다.
  10. TestVal(345) 를 다시 클릭 합니다. 이전의 페이지 출력이 캐시 되 고 브라우저에 표시를 확인 합니다.
  11. 첫 번째 인스턴스를 반환 하도록 testval (123) 누릅니다. 제공된 된 쿼리 문자열 변수 값에 따라 다른 페이지 출력 캐시 버전 표시를 확인 합니다.
맨 위로

문제 해결

  • VaryByParam을 사용할 때는 추가 캐시 항목의 쿼리 문자열 변수의 사례 결과를 변경 하는 점에 유의.
  • 기간 (초)에 지정 되어 있는지 염두에 두어야 합니다.
  • VaryByCustom 을 사용 하 여 Global.asax 파일에서 HttpApplication.GetVaryByCustomString 메서드를 재정의 하는 경우 일치 하는 특성으로 제공 되는 사용자 지정 문자열에 대 한 항목이 있는 경우 브라우저 의 기본 설정은 사용 됩니다.
맨 위로

참조

페이지 출력 캐싱에 대 한 자세한 내용은 다음 Microsoft 웹 사이트를 참조 하십시오.
GotDotNet 페이지 출력 캐싱 퀵 스타트 자습서
Microsoft.NET Framework 소프트웨어 개발 키트 (SDK)
http://msdn2.microsoft.com/en-us/library/ms950382.aspx

ASP.NET 페이지 캐싱
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx

@ OutputCache
http://msdn2.microsoft.com/en-us/library/hdxfb6cy(vs.71).aspx
맨 위로
속성

문서 ID: 308375 - 마지막 검토: 2017. 2. 6. - 수정: 2

피드백