C# 으로 Gzip 압축 구현 방법
IIS 웹 서버에서 Gzip 압축을 사용하면 웹 애플리케이션의 성능을 크게 향상시킬 수 있습니다.
C#으로 ASP.NET 애플리케이션을 개발할 때 Gzip 압축을 구현하는 방법은 IIS 설정을 통해 간단히 할 수 있으며, 별도로 C# 코드에서 추가 작업을 할 수도 있습니다.
여기에서는 두 가지 방법을 설명하겠습니다.
1. IIS에서 Gzip 설정하기
IIS 자체에서 Gzip 압축을 활성화하는 것이 가장 일반적인 방법입니다. 다음 단계로 설정할 수 있습니다:
1) IIS 관리자를 통한 Gzip 설정
1.. IIS 관리자 열기: Windows + R 키를 누르고 inetmgr을 입력하여 IIS 관리자를 엽니다.
2. 사이트 선택: Gzip을 적용할 웹사이트를 선택합니다.
3. 압축 모듈 설정: 왼쪽 패널에서 사이트를 선택하고, 중앙의 "IIS" 섹션에서 압축(Compression)을 선택합니다.
4. 정적 및 동적 콘텐츠 압축 활성화: 정적 및 동적 콘텐츠 압축을 체크한 후 적용 버튼을 클릭합니다.
- 정적 콘텐츠 압축: HTML, CSS, JavaScript 등 변경되지 않는 파일 압축.
- 동적 콘텐츠 압축: 서버에서 생성되는 데이터, 예를 들어 API 응답이나 동적으로 생성되는 HTML.
2) web.config 파일에서 Gzip 설정:
IIS 설정 외에도 web.config 파일을 통해 Gzip을 적용할 수 있습니다.
이 코드는 정적 및 동적 콘텐츠에 대해 Gzip 압축을 활성화하는 방법을 보여줍니다.
<configuration>
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<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="application/json" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="application/json" enabled="true" />
</staticTypes>
</httpCompression>
</system.webServer>
</configuration>
2. C# 코드에서 Gzip 적용하기
ASP.NET 애플리케이션에서 서버에서 직접 Gzip 압축을 수행하려면, HttpResponse 개체를 사용하여 직접 압축을 처리할 수 있습니다.
Global.asax에서 Gzip 적용
Global.asax 파일에서 응답을 압축하는 코드를 추가할 수 있습니다.
이 코드는 클라이언트가 지원하는 인코딩 방식(Gzip 또는 Deflate)을 확인하고, 그에 맞게 응답을 압축하여 보냅니다.
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
var app = sender as HttpApplication;
if (app == null || app.Context == null || app.Context.Response == null)
return;
var acceptedEncodings = app.Request.Headers["Accept-Encoding"];
if (!string.IsNullOrEmpty(acceptedEncodings))
{
acceptedEncodings = acceptedEncodings.ToLowerInvariant();
if (acceptedEncodings.Contains("gzip"))
{
app.Response.Filter = new System.IO.Compression.GZipStream(app.Response.Filter,
System.IO.Compression.CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptedEncodings.Contains("deflate"))
{
app.Response.Filter = new System.IO.Compression.DeflateStream(app.Response.Filter,
System.IO.Compression.CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
}
}
압축 적용 확인 방법
압축이 제대로 적용되었는지 확인하려면 다음 방법을 사용할 수 있습니다:
🔵 브라우저 개발자 도구
네트워크 탭에서 요청 헤더에 "Content-Encoding: gzip" 또는 "Content-Encoding: deflate"가 포함되어 있는지 확인합니다
🔵 온라인 Gzip 테스트 도구
웹사이트의 URL을 입력하여 Gzip 압축이 적용되었는지 테스트할 수 있는 다양한 온라인 도구가 있습니다.
이처럼 IIS 설정을 통해 간단하게 Gzip을 적용할 수 있으며, C# 코드를 통해 좀 더 세밀하게 제어할 수도 있습니다.
출처 | ChatGPT
'.NET > C#' 카테고리의 다른 글
C# 에서 Cookie 읽을 수 있는 2가지 방법과 그 차이 | ChatGPT (0) | 2024.10.20 |
---|---|
C# 접근 URL 가져오는 방법 (feat. Request.Url 사용) | ChatGPT (1) | 2024.10.19 |
C# 인코딩과 디코딩 함수 | ChatGPT (0) | 2024.09.11 |
LINQ 쿼리를 사용하여 list 내에 값이 있는지 확인하는 방법 | ChatGPT (0) | 2023.11.27 |
c# 현재 페이지 url 가져오기 | ChatGPT (0) | 2023.11.26 |