Brumli to nowy algorytm kompresji opracowany przez Google. Mniejszy rozmiar odpowiedzi kompresji pozwala na lepsze wykorzystanie przestrzeni i szybsze ładowanie strony. W wielu przypadkach Brotli przewyższa gzip. Zalety: Dla typowych zasobów internetowych, takich jak css, html, js, Brotli przewyższa gzip o 17-25%. Gęstość burtlu -11 w porównaniu do gzip-9: html (korpus wielojęzyczny): oszczędzaj 25% js (najwyższe 10k w Alexa): oszczędzaj 17% kurczącego się js (top 10k Alexy): oszczędzaj 17% css (top 10k Alexy): 20% oszczędności.
Wprowadzenie do algorytmu Brotli
Brotli zostało pierwotnie wydane w 2015 roku do kompresji offline czcionek internetowych. Inżynierowie oprogramowania Google wydali ulepszoną wersję Brotli we wrześniu 2015 roku, ze szczególnym naciskiem na kompresję HTTP. Enkoder został częściowo przepisany, aby poprawić współczynnik kompresji, zarówno enkoder, jak i dekoder zostały zwiększone dla szybkości, a API streamingowe zostało ulepszone, aby dodać więcej poziomów jakości kompresji. Nowa wersja pokazuje również poprawę wydajności na różnych platformach oraz zmniejszoną ilość pamięci potrzebnej do dekodowania.
W przeciwieństwie do powszechnych algorytmów kompresji ogólnego przeznaczenia, Brotli używa zdefiniowanego słownika o pojemności 120 kilobajtów. Słownik zawiera ponad 13 000 powszechnie używanych słów, zwrotów i innych podciągów z dużego korpusu tekstów i dokumentów HTML. Zdefiniowane algorytmy mogą zwiększyć gęstość kompresji mniejszych plików.
Użycie Brotli zamiast deflate do kompresji plików tekstowych zwykle zwiększa gęstość kompresji o 20%, podczas gdy prędkość kompresji i dekompresji pozostaje mniej więcej taka sama. Typ kodowania treści do kompresji strumieni za pomocą Brotli został zaproponowany z użyciem "br".
Brotli kontra Gzip
Przy ocenie algorytmów kompresji koncentrujemy się na dwóch wskaźnikach: szybkości kompresji i szybkości kompresji. Jak widać na powyższym rysunku, niezależnie od tego, który z 9 poziomów kompresji gzip jest użyty, jego współczynnik kompresji jest niższy niż w brotli (w porównaniu do gzip, można go również skonfigurować do 10), a prędkość kompresji jest również wolniejsza.
Przewaga Bobrli: Brotli przewyższa gzip o 17-25% dla typowych zasobów internetowych, takich jak css, html, js. Gęstość burtlu -11 w porównaniu do gzip-9: html (korpus wielojęzyczny): oszczędzaj 25% js (najwyższe 10k w Alexie): oszczędzaj 17% kurczącego się js (top 10k Alexy): oszczędzaj 17% css (top 10k Alexy): 20% oszczędności
asp.net core umożliwia Brotli
Wartość nagłówka Accept-Encoding
Konfiguracja kodu
Poniższy kod pokazuje, jak włączyć responsywne oprogramowanie kompresyjne dla domyślnych typów MIME i dostawców kompresji (Brotli i Gzip):
Nuta:
- aplikacja. UseResponseCompression musi być zawarty w aplikacji. Użyj Mvc przed połączeniem.
- Użyj narzędzi takich jak Fiddler, Firebug czy Postman, aby skonfigurować nagłówek żądania Accept-Encoding i przeanalizuj nagłówek odpowiedzi, jego rozmiar i treść.
Domyślnie dostawca kompresji Brotli jest dodawany do tablicy dostawcy kompresji wraz z dostawcą kompresji Gzip. Gdy klient obsługuje skompresowany format danych Brotli, kompresja domyślnie przyjmuje kompresję Brotli. Jeśli klient nie obsługuje Brotli, kompresja domyślnie przyjmuje Gzip, gdy klient obsługuje kompresję Gzip.
Test kompresji BR
Otwórz narzędzie Fiddler do przechwytywania pakietów i użyj przeglądarki, aby uzyskać dostęp do adresu naszej strony internetowej, możesz zobaczyć następujące informacje:
Nagłówek żądania: Accept-Encoding: gzip, deflate, br
Nagłówek odpowiedzi: Content-Encoding: br
Podczas kompresji nagłówek Content-Length jest usuwany, ponieważ treść ciała zmienia się podczas kompresji odpowiedzi.
Po wykonaniu kompresji nagłówek Content-MD5 zostaje usunięty, ponieważ treść ciała zmieniła się i skrót przestał być ważny.
Gdy asp.net core włącza funkcję https, Brotli nie będzie działać na kompresję html i json, ale może kompresować js i css. (Możliwe, że długość znaku jest zbyt mała, by ją skompresować, i powinna być ustawiona)
(Koniec)
|