GZIP과 DEFLATE 압축의 장점은 무엇입니까?
나는 asp에 웹사이트가 있습니다.NET 4(C#).
웹 사이트 대역폭을 최적화하는 방법을 찾고 있습니다.
GZIP(DEFLATE 기반)은 데이터를 추가하기 때문에 DEFLATE가 GZIP보다 빠르고 작다는 기사를 많이 읽었습니다.
bing.com 과 google.com 의 헤더를 확인해보니 둘 다 GZIP 인코딩 데이터를 보내는 것 같습니다.
제가 읽은 것이 사실이라고 가정하면, 저는 이 경우 GZIP의 장점이 그립습니다.그래서 저는 DEFLATE보다 GZIP을 선호하는 데는 타당한 이유가 있을 것이라고 생각합니다.
질문:
- GZIP은 제가 모르는 DEFLATE보다 어떤 이점을 제공합니까?
- 주요 검색 엔진이 GZIP을 사용하는 이유에 대한 단서가 있습니까?
다음은 DEFLATE(Global.asax)를 보내는 데 사용하는 코드입니다.
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (!(app.Context.CurrentHandler is Page ||
app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;
if (acceptEncoding == null || acceptEncoding.Length == 0)
return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
Gzip은 deflate + 몇 개의 헤더와 체크섬이기 때문에 더욱 안정적입니다.즉, gzip은 deflate이고, 추가 헤더와 체크섬입니다.deflate는 gzip의 일부인 dler32로 확인됩니다.gzip 페이로드가 DEFLATE로 압축된 페이로드이기 때문입니다.
gzip 파일/스트림에는 다음이 포함됩니다.
- a 10-byte header, containing a magic number, a version number and a time stamp - optional extra headers, such as the original file name, - a body, containing a DEFLATE-compressed payload - an 8-byte footer, containing a CRC-32 checksum and the length of the original uncompressed data
다른 대답은 대부분 틀렸습니다.의 "디플레이터" 값은Content-Encoding
HTTP 헤더는 실제로 ZLIB를 의미하는 잘못된 이름입니다.따라서 둘 다 체크섬과 압축된 내용이 동일합니다.머리글/바닥글만 다르고 사용하는 체크섬만 다릅니다.
gzip | "deflate"(zlib) | |
---|---|---|
머리글 크기 | 10바이트 | 2바이트 |
바닥글 크기 | 4바이트 | 0 |
체크섬 | CRC32 | 아들러-32 |
압축 알고리즘 | 공기 빼기 | 공기 빼기 |
사양 | RFC 1952 | RFC 1950 |
이전에는 초기 Microsoft IIS 서버가 zlib 데이터 대신 원시 디플레이트 데이터를 전송했기 때문에 "디플레이트"가 문제가 있었습니다(https://stackoverflow.com/a/9186091/1218408) 참조).이 문제를 해결하기 위해 gzip을 사용하는 것이 일반화되었습니다.
일반적으로 Adler-32가 CRC32보다 계산 속도가 빠르기 때문에 deflate가 약간 더 빠르지만 대부분의 시간은 실제로 데이터를 압축하고 체크섬을 계산하지 않는 데 사용됩니다.
언급URL : https://stackoverflow.com/questions/7243705/what-is-the-advantage-of-gzip-vs-deflate-compression
'programing' 카테고리의 다른 글
iframe이 jQuery에서 로드를 완료했을 때 이벤트를 실행하려면 어떻게 해야 합니까? (0) | 2023.08.20 |
---|---|
Laravel: 다른 필드보다 커야 하는 정수 필드의 유효성을 검사합니다. (0) | 2023.08.20 |
jQuery를 사용한 파이 차트 (0) | 2023.08.20 |
AJAX 요청 및 PHP 클래스 함수 (0) | 2023.08.20 |
부울 모드에서 사용하는 동안 전체 텍스트 색인을 찾을 수 없습니다. (0) | 2023.08.20 |