캐싱 <캐싱>

개요

요소를 <caching> 사용하면 IIS(인터넷 정보 서비스) 7 애플리케이션에 대한 페이지 출력 캐싱을 사용하거나 사용하지 않도록 설정할 수 있습니다. 또한 이 요소를 사용하면 IIS가 사용자 모드, 커널 모드 또는 둘 다에서 페이지 출력을 캐시하는지 여부와 적용하려는 출력 캐싱 제한을 구성할 수 있습니다.

<caching> 요소에는 ASP.NET 페이지에 적용할 수 있는 출력 캐시 설정 컬렉션이 포함된 요소도 포함되어 <profiles> 있습니다.

페이지 출력 캐싱은 브라우저가 요청한 후 ASP 페이지 또는 ASP.NET 페이지와 같은 동적 페이지의 응답을 메모리에 저장합니다. 페이지에 대한 후속 요청이 도착하면 서버는 페이지를 다시 처리하는 대신 캐시된 응답을 보냅니다. ASP.NET 페이지 출력 캐시는 IIS 7 출력 캐시와 별개입니다. 통합 ASP.NET 모드를 사용하는 애플리케이션에서는 IIS 7 출력 캐시와 마찬가지로 모든 콘텐츠 형식에 대해 프로그래밍 방식으로 ASP.NET 페이지 출력 캐시를 사용할 수 있습니다.

페이지 출력 캐싱은 서버 로드 및 응답 시간을 줄입니다. 출력 캐싱은 자주 변경되지 않는 데이터베이스 테이블에 종속된 ASP.NET 페이지와 같이 반동적인 페이지에서 가장 잘 작동합니다.

출력 캐싱은 HTML, JPG 또는 GIF 파일과 같은 정적 파일에 필요하지 않으며 자주 변경되는 데이터베이스에서 읽은 동적 ASP.NET 또는 PHP 페이지에 더 많은 메모리 오버헤드가 발생할 수 있습니다.

호환성

버전 참고
IIS 10.0 <caching> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <caching> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 <caching> 요소가 IIS 8.0에서 수정되지 않았습니다.
IIS 7.5 <caching> 요소가 IIS 7.5에서 수정되지 않았습니다.
IIS 7.0 요소는 <caching> IIS 7.0에서 도입되었습니다.
IIS 6.0 해당 없음

설치 프로그램

요소는 <caching> IIS 7의 기본 설치에 포함됩니다.

방법

페이지 출력 캐싱을 구성하는 방법

  1. IIS(인터넷 정보 서비스) 관리자를 엽니다.

    • Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:

      • 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows 8 또는 Windows 8.1 사용하는 경우:

      • Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
      • 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
    • Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
    • Windows Vista 또는 Windows 7을 사용하는 경우:

      • 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
      • 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
  2. 연결 창에서 페이지 출력 캐싱을 구성하려는 연결, 사이트, 애플리케이션 또는 디렉터리로 이동합니다.

  3. 창에서 출력 캐싱으로 스크롤한 다음 출력 캐싱을 두 번 클릭합니다.
    기본 웹 사이트 홈 창에서 선택한 출력 캐싱의 스크린샷

  4. 작업 창에서 추가...를 클릭합니다.

  5. 캐시 규칙 추가 대화 상자에서 파일 이름 확장명 상자에 캐시할 파일 이름 확장명을 입력한 다음 사용자 모드 캐싱 옵션, 커널 모드 캐싱 옵션 또는 둘 다를 선택합니다.

  6. 캐싱에 사용할 옵션을 선택한 다음 확인을 클릭합니다.
    지정된 옵션이 있는 캐시 규칙 추가 대화 상자의 스크린샷

구성

ApplicationHost.config 파일의 서버 수준이나 사이트, 애플리케이션 또는 Web.config 파일의 디렉터리 수준에서 요소를 구성할 <caching> 수 있습니다.

특성

attribute Description
enabled 선택적 부울 특성입니다.

페이지 출력 캐싱을 사용할지 여부를 지정합니다.

기본값은 true입니다.
enableKernelCache 선택적 부울 특성입니다.

커널 캐싱을 사용할 수 있는지 여부를 지정합니다.

기본값은 true입니다.
maxCacheSize 선택적 uint 특성입니다.

출력 캐시의 최대 크기를 지정합니다.

참고: 이 설정은 ApplicationHost.config 파일 수준에서만 적용됩니다. 이 속성을 더 낮은 수준으로 설정하면 아무런 효과가 없습니다.

기본값은 0입니다.
maxResponseSize 선택적 uint 특성입니다.

캐시할 수 있는 최대 응답 크기를 지정합니다.

참고: 이 설정은 ApplicationHost.config 파일 수준에서만 적용됩니다. 이 속성을 더 낮은 수준으로 설정하면 아무런 효과가 없습니다.

기본값은 262144입니다.

자식 요소

요소 Description
profiles 선택적 요소입니다.

ASP.NET 페이지에 적용할 수 있는 출력 캐시 설정 그룹을 포함합니다.

구성 샘플

다음 구성 예제에서는 사용자 모드 캐싱 및 커널 모드 캐싱을 사용하도록 설정하며, 둘 다 IIS 7.0에서 기본적으로 사용하도록 설정됩니다. 또한 요소에 <add><profiles> 포함된 요소를 사용하여 .asp 파일 이름 확장명을 가진 파일에 대한 출력 캐싱을 사용하도록 설정합니다. 또한 정책 특성을 사용하여 변경될 때까지 페이지를 캐시합니다. kernelCachePolicy 특성을 사용하여 커널 캐싱에 대해 동일한 작업을 수행합니다.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

다음 코드 예제에서는 최대 출력 캐시 크기를 1기가바이트로 설정하고 출력 캐시에 저장할 수 있는 응답의 최대 크기를 512KB로 설정합니다.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

샘플 코드

다음 예제에서는 .asp 파일 이름 확장명을 가진 파일에 대한 페이지 출력 캐싱을 구성하고 ASP 파일이 변경될 때까지 사용자 모드 및 커널 모드에서 캐시하도록 IIS를 구성합니다.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 커밋 매개 변수 apphost 를 로 설정해야 합니다. 그러면 구성 설정이 ApplicationHost.config 파일의 적절한 위치 섹션에 커밋됩니다.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()