다음을 통해 공유


체계 체계 <>

개요

<scheme> 요소의 <httpCompression> 요소는 IIS(인터넷 정보 서비스) 7에서 GNU zip(Gzip) 및 Deflate 압축 체계에 대해 다음 설정을 지정합니다.

  • 이름dll 특성은 각각 압축 구성표의 이름 및 공급자 DLL을 지정합니다. IIS 7은 Gzip 및 Deflate 압축을 모두 지원하며 두 압축 체계는 현재 %windir%\system32\inetsrv\gzip.dll 구현됩니다.

  • doStaticCompression 특성은 이름 특성으로 지정된 압축 구성표에 대해 정적 압축을 사용할 수 있는지 여부를 지정합니다. doStaticCompressiontrue로 설정하면 클라이언트에서 요청할 때 정적 콘텐츠가 압축됩니다. 정적 압축을 사용하는 경우 헤더에 지정된 압축 체계가 IIS에서 사용하도록 설정된 한 "Accept-Encoding: gzip" 또는 "Accept-Encoding: deflate" 헤더가 포함된 정적 콘텐츠에 대한 각 요청은 콘텐츠가 압축됩니다. 요청에 이 헤더가 없거나 헤더가 IIS에서 사용하도록 설정되지 않은 압축 체계를 지정하는 경우 콘텐츠가 압축되지 않습니다.

    IIS가 응답을 압축해야 한다고 결정하면 IIS는 httpCompression> 요소의< 디렉터리 특성으로 지정된 압축 디렉터리를 확인합니다. 새로 압축된 정적 파일 버전이 디렉터리에 있으면 클라이언트 브라우저로 전송됩니다. 새로 압축된 버전의 파일을 찾을 수 없으며 urlCompression> 요소의<dynamicCompressionBeforeCache 특성으로 주문형 압축을 사용하도록 설정하면 IIS는 요청된 파일을 압축되지 않은 형식으로 보내고 해당 파일을 백그라운드 압축 큐에 추가합니다.

  • doDynamicCompression 특성은 이름 특성으로 지정된 압축 체계에 동적 압축을 사용할 수 있는지 여부를 지정합니다. doDynamicCompressiontrue로 설정하면 클라이언트에서 요청할 때 동적 콘텐츠가 압축됩니다. 동적 압축을 사용하도록 설정하면 헤더에 지정된 압축 체계가 IIS에서 사용하도록 설정된 한 "Accept-Encoding: gzip" 또는 "Accept-Encoding: deflate" 헤더가 포함된 동적 콘텐츠에 대한 각 요청은 콘텐츠가 압축됩니다. 요청에 이 헤더가 없거나 헤더가 IIS에서 사용하도록 설정되지 않은 압축 체계를 지정하는 경우 콘텐츠가 압축되지 않습니다.

    참고

    동적 콘텐츠는 정의상 항상 변경되므로 IIS는 압축된 버전의 동적 콘텐츠를 캐시하지 않습니다. 동적 압축은 상당한 CPU 시간과 메모리 리소스를 소비하며 네트워크 연결 속도가 느린 서버와 CPU 시간을 절약하는 서버에서만 사용해야 합니다.

  • dynamicCompressionLevelstaticCompressionLevel 특성은 IIS가 각각 동적 또는 정적 콘텐츠를 압축할 때 압축 구성표에 대한 압축 수준을 지정합니다. 압축 수준이 낮을수록 압축 파일이 약간 더 커지지만 CPU 및 메모리 리소스에 대한 전반적인 영향이 낮습니다. 압축 수준이 높을수록 일반적으로 압축 파일이 작아지지만 CPU 및 메모리 사용량이 더 높습니다.

참고

기본적으로 Gzip 압축 체계만 IIS 7에서 사용할 수 있습니다. Deflate 압축 체계를 프로그래밍 방식으로 사용하도록 설정하려면 이 문서의 코드 샘플 섹션을 참조하세요.

호환성

버전 참고
IIS 10.0 <scheme> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <scheme> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 <scheme> 요소가 IIS 8.0에서 수정되지 않았습니다.
IIS 7.5 <scheme> 요소가 IIS 7.5에서 수정되지 않았습니다.
IIS 7.0 <scheme> 요소의 <httpCompression> 요소는 IIS 7.0에서 도입되었습니다.
IIS 6.0 요소는 <scheme> 다음 IIS 6.0 메타베이스 속성을 대체합니다.
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

설치 프로그램

HTTP 압축은 일반적으로 IIS 7 이상의 기본 설치에서 사용할 수 있습니다. 그러나 정적 압축만 기본적으로 설치됩니다. 정적 또는 동적 압축을 설치하려면 다음 단계를 사용합니다.

Windows Server 2012 또는 Windows Server 2012 R2

  1. 작업 표시줄에서 서버 관리자를 클릭합니다.
  2. 서버 관리자관리 메뉴를 클릭한 다음 역할 및 기능 추가를 클릭합니다.
  3. 역할 및 기능 추가 마법사에서 다음을 클릭합니다. 설치 유형을 선택하고 다음을 클릭합니다. 대상 서버를 선택하고 다음을 클릭합니다.
  4. 서버 역할 페이지에서 웹 서버(IIS)를 확장하고 웹 서버를 확장하고 성능을 확장한 다음 정적 콘텐츠 압축 및/또는 동적 콘텐츠 압축을 선택합니다. 다음을 클릭합니다.
    정적 콘텐츠 압축이 선택되고 동적 콘텐츠 압축이 강조 표시된 성능 창의 스크린샷
  5. 기능 선택 페이지에서 다음을 클릭합니다.
  6. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  7. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows 8 또는 Windows 8.1

  1. 시작 화면에서 포인터를 왼쪽 아래 모서리로 이동하고 시작 단추를 마우스 오른쪽 단추로 클릭한 다음 제어판 클릭합니다.
  2. 제어판프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스를 확장하고 World Wide Web Services를 확장하고 성능 기능을 확장한 다음 동적 콘텐츠 압축 및/또는 정적 콘텐츠 압축을 선택합니다.
    스크린샷은 Windows 기능 켜기 또는 끄기 페이지의 성능 기능 창이 확장되고 정적 콘텐츠 압축이 강조 표시된 것을 보여줍니다.
  4. 확인을 클릭합니다.
  5. 닫기를 클릭합니다.

Windows Server 2008 또는 Windows Server 2008 R2

  1. 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 서버 관리자 클릭합니다.
  2. 서버 관리자 계층 창에서 역할을 확장한 다음 웹 서버(IIS)를 클릭합니다.
  3. 웹 서버(IIS) 창에서 역할 서비스 섹션으로 스크롤한 다음 역할 서비스 추가를 클릭합니다.
  4. 역할 서비스 추가 마법사역할 서비스 선택 페이지에서 동적 압축 및 정적 콘텐츠 압축을 설치하려는 경우 동적콘텐츠 압축을 선택하고 정적 압축을 설치하려면 다음을 클릭합니다.
    스크린샷은 성능 노드가 확장되고 동적 콘텐츠 압축이 강조 표시된 역할 서비스 선택 페이지를 보여줍니다.
  5. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  6. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows Vista 또는 Windows 7

  1. 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
  2. 제어판프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스, World Wide Web Services, 성능 기능을 차례로 확장합니다.
  4. 정적 압축을 설치하려는 경우 동적 압축 및 정적 콘텐츠 압축 을 설치하려면 Http 압축 동적을 선택합니다.
    성능 기능 노드가 확장되고 H T TP Common Dynamics가 선택된 Windows 기능 켜기 또는 끄기 페이지의 스크린샷
  5. 확인을 클릭합니다.

방법

IIS 7에 대한 압축 체계를 설정하기 위한 사용자 인터페이스는 없습니다. 프로그래밍 방식으로 압축 체계를 설정하는 방법에 대한 예제는 이 문서의 코드 샘플 섹션을 참조하세요.

구성

특성

attribute Description
dll 필수 문자열 특성입니다.

압축 체계와 연결된 압축 DLL의 정규화된 파일 시스템 경로 및 파일 이름을 지정합니다. 이 특성에 대한 변경 내용이 적용되기 전에 WWW 서비스(World Wide Web Publishing Service)를 다시 시작해야 합니다.
doDynamicCompression 선택적 부울 특성입니다.

ASP(Active Server Pages) 및 ISAPI 확장의 스크립트와 같은 동적 콘텐츠에 대한 요청에 대한 응답이 압축되는지 여부를 지정합니다. 이 값이 개별 압축 체계 수준에서 변경된 경우 변경 내용이 적용되기 전에 WWW 서비스를 다시 시작해야 합니다.

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

IIS가 정적 콘텐츠 요청에 대한 응답을 압축할지 여부를 지정합니다. 이 특성은 상속할 수 없으므로 이름 특성이 Gzip으로 설정된 경우 전역 수준(<httpCompression>)과 개별 체계 수준에서 true로 설정해야 합니다. 이 값이 개별 압축 체계 수준에서 변경된 경우 변경 내용이 적용되기 전에 WWW 서비스를 다시 시작해야 합니다.

참고: 정적 압축 저장소는 NTFS로 포맷된 디스크 파티션 또는 원격 공유에 있어야 합니다. 파일 저장소가 NTFS가 아니면 정적 압축을 사용할 수 없습니다. 보안상의 이유로 FAT 캐시 저장소에서 압축된 응답이 제공되지 않습니다.

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

동적 콘텐츠가 압축될 때 압축 구성표의 압축 수준을 지정합니다. 수준은 0(가장 낮은 압축 수준 및 가장 낮은 CPU 사용량)에서 10(가장 높은 압축 수준 및 가장 높은 CPU 사용량)에 이르기까지 다양합니다. 이 특성에 대한 변경 내용이 적용되기 전에 WWW 서비스를 다시 시작해야 합니다.

참고: 동적 압축은 상당한 CPU 시간과 메모리 리소스를 소비하므로 네트워크 연결 속도가 느린 서버와 CPU 시간을 절약하는 서버에서만 사용합니다. 압축된 정적 응답은 캐시할 수 있으므로 동적 응답처럼 CPU 리소스에 영향을 미치지 않습니다.

기본값은 0입니다.
name 필수 문자열 특성입니다.

압축 구성표의 이름을 지정합니다. 예를 들어 Gzip 또는 Deflate입니다.
staticCompressionLevel 선택적 uint 특성입니다.

정적 콘텐츠가 압축될 때 압축 구성표의 압축 수준을 지정합니다. 수준은 0(가장 낮은 압축 수준 및 가장 낮은 CPU 사용량)에서 10(가장 높은 압축 수준 및 가장 높은 CPU 사용량)에 이르기까지 다양합니다. 0은 압축을 사용하지 않도록 설정됨을 의미합니다. 이 특성에 대한 변경 내용이 적용되기 전에 WWW 서비스를 다시 시작해야 합니다.

기본값은 7입니다.

자식 요소

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

HTTP 압축 체계 컬렉션에서 HTTP 압축 체계에 대한 참조를 제거합니다.
clear 선택적 요소입니다.

HTTP 압축 체계 컬렉션에서 HTTP 압축 체계에 대한 모든 참조를 제거합니다.

구성 샘플

다음 기본 <httpCompression> 요소는 IIS 7의 ApplicationHost.config 파일에 구성됩니다. 이 구성 섹션은 요소를 사용하지 않는 한 기본 구성 설정을 상속합니다 <clear> .

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
   <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
   <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </dynamicTypes>
   <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </staticTypes>
</httpCompression>

샘플 코드

다음 코드 샘플에서는 DEFLATE 압축 체계를 IIS 7에 추가합니다.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /commit:apphost

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 commit 매개 변수 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 httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();

         ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
         schemeElement["name"] = @"deflate";
         schemeElement["doStaticCompression"] = true;
         schemeElement["doDynamicCompression"] = true;
         schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
         httpCompressionCollection.Add(schemeElement);

         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 httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection

      Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
      schemeElement("name") = "deflate"
      schemeElement("doStaticCompression") = True
      schemeElement("doDynamicCompression") = True
      schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
      httpCompressionCollection.Add(schemeElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var httpCompressionCollection = httpCompressionSection.Collection;

var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set httpCompressionCollection = httpCompressionSection.Collection

Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)

adminManager.CommitChanges()