Brotli는 구글이 개발한 새로운 압축 알고리즘입니다. 더 작은 압축 응답 크기는 더 나은 공간 활용과 빠른 페이지 로딩을 가능하게 합니다. 많은 경우, Brotli는 gzip보다 더 좋은 성능을 보입니다. 장점: css, html, js와 같은 일반적인 웹 자산에서 Brotli는 gzip보다 17-25% 더 뛰어난 성능을 냅니다. Brotli -11 밀도 - gzip-9 대비: html(다국어 말뭉치): js 25% 저장 (Alexa 상위 10k): 17% 줄어드는 js 저장 (Alexa 상위 10k): CSS 17% 저장 (Alexa 상위 10k): 20% 절감.
브로틀리 알고리즘 소개
Brotli는 원래 2015년에 웹 폰트의 오프라인 압축을 위해 출시되었습니다. 구글 소프트웨어 엔지니어들은 2015년 9월 HTTP 압축에 중점을 둔 향상된 버전의 브로틀리를 출시했습니다. 인코더는 압축 비율을 개선하기 위해 부분적으로 재작성되었고, 인코더와 디코더는 속도를 높이기 위해 향상되었으며, 스트리밍 API도 향상된 압축 품질을 제공했습니다. 새 버전은 또한 플랫폼 전반에 걸쳐 성능 향상과 디코딩에 필요한 메모리 감소를 보여줍니다.
일반적인 범용 압축 알고리즘과 달리, Brotli는 미리 정의된 120킬로바이트 사전을 사용합니다. 이 사전에는 방대한 텍스트 및 HTML 문서에서 13,000개 이상의 흔히 사용되는 단어, 구, 기타 하위 문자열이 포함되어 있습니다. 미리 정의된 알고리즘은 작은 파일의 압축 밀도를 높일 수 있습니다.
텍스트 파일을 압축할 때 Brotli를 사용해 디플레이트 대신 사용하면 압축 밀도가 보통 20% 증가할 수 있으며, 압축과 압축 해제 속도는 거의 동일합니다. Brotli를 이용한 스트림 압축용 콘텐츠 인코딩 유형은 "br"을 사용하는 것이 제안되었습니다.
브로틀리 대 지지
압축 알고리즘을 평가할 때 우리는 압축률과 압축 속도라는 두 가지 지표에 집중합니다. 위 그림에서 볼 수 있듯이, gzip의 9가지 압축 수준 중 어느 것을 사용하든 압축비는 brotli보다 낮으며(gzip과 비교하면 10까지 설정할 수도 있음), 압축 속도도 느립니다.
Brotli 장점: Cs, html, js 같은 일반적인 웹 자산에서 Brotli는 gzip보다 17-25% 더 우수한 성능을 보입니다. Brotli -11 밀도 - gzip-9 대비: html(다국어 말뭉치): js 25% 저장 (Alexa 상위 10k): 17% 줄어드는 js 저장 (Alexa 상위 10,000): CSS 17% 저장 (Alexa 상위 10,000) 20% 절감
asp.net 핵심은 Brotli를 가능하게 합니다
수락-인코딩 헤더 값
코드 구성
다음 코드는 기본 MIME 유형과 압축 제공자(Brotli와 Gzip)에 대해 반응형 압축 미들웨어를 활성화하는 방법을 보여줍니다:
메모:
- 앱. UseResponseCompression은 앱에 반드시 포함되어야 합니다. 전화하기 전에 Mvc를 사용하세요.
- Fiddler, Firebug, Postman 같은 도구를 사용해 Accept-Encoding 요청 헤더를 설정하고 응답 헤더, 크기, 본문을 연구하세요.
기본적으로 Brotli 압축 제공자는 Gzip 압축 제공자와 함께 압축 제공자의 배열에 추가됩니다. 클라이언트가 Brotli 압축 데이터 포맷을 지원할 때, 압축은 기본적으로 Brotli 압축으로 전환됩니다. 클라이언트가 Brotli를 지원하지 않을 경우, 클라이언트가 Gzip 압축을 지원할 때 압축이 기본적으로 Gzip으로 전환됩니다.
BR 압축 시험
피들러 패킷 캡처 도구를 열고 브라우저를 사용해 저희 웹사이트 주소에 접속하면 다음과 같은 내용을 확인할 수 있습니다:
요청 헤더: Accept-Encoding: gzip, deflate, br
응답 헤더: Content-Encoding: br
압축이 수행될 때, 응답이 압축될 때 본문 내용이 변하기 때문에 Content-Length 헤더가 제거됩니다.
압축이 수행되면 본문 내용이 변경되어 해시가 더 이상 유효하지 않으므로 Content-MD5 헤더가 제거됩니다.
asp.net 코어가 https 함수를 활성화하면 Brotli는 html과 json 압축에 영향을 미치지 않지만, js와 css는 압축할 수 있습니다. (문자 길이가 너무 짧아 압축할 수 없을 수도 있으니, 이 경우 설정해야 합니다)
(끝)
|