A Brotli-tömörítés egy általános célú tömörítési technika, amelyet a böngészők széles körben támogatnak. Összehasonlítható a jelenleg rendelkezésre álló tömörítési módszerekkel, mivel 20–26% -kal jobb tömörítési arányokat kínál. Ennek ellenére nem jó, ha a webszerver tömörített szöveges erőforrásokat küld a Brotli algoritmussal.
Ebben a cikkben megtudhatjuk, hogyan működik a tömörítés a szerveren, és miért hasznos? Megtanuljuk továbbá az Nginx szerver telepítését és a szerverünk számára a Brotli tömörített fájlok biztosítását.
Háttér
A tömörítési technikák / algoritmusok a tartalom méretének csökkentésével javítják a webhely teljesítményét. Ezért a tömörített adatok alacsony terhelést és átviteli időt vesznek igénybe. Ennek azonban ára van. A szerverek rengeteg számítási erőforrást használnak a jobb tömörítési arány biztosítása érdekében. Ennélfogva annál jobb, drágább. Tehát nagy erőfeszítéseket tesz a tömörítési formátumok javítása a minimális CPU-ciklusok felhasználása mellett.
Mostanra a legpotenciálisabb tömörítési formátumot tömörítették. A közelmúltban a gzip-et egy új tömörítési algoritmus váltja fel, Brotli néven. Ez egy fejlett tömörítési algoritmus, amely Huffman kódolásból, az L77 algoritmusból és a kontextus modellezéséből áll. Ezzel szemben a Gzip a Deflate algoritmusra épül.
A veszteségmentes tömörítési formátum, amelyet a Google tervezett, szorosan összefügg a leeresztett tömörítési formátummal. Mindkét tömörítési módszer csúszó ablakokat használ a visszahivatkozásokhoz. A Brotli csúszóablak mérete 1 KB és 16 MB között mozog. Ezzel szemben a Gzip rögzített ablakmérete 32 KB. Ez azt jelenti, hogy Brotli ablaka 512-szer nagyobb, mint a deflate ablak, ami nem releváns, mivel a 32 KB-nál nagyobb szövegfájlok ritkán vannak a webszervereken.
A kiszolgálótömörítés kompatibilitása fontos
Amikor letöltünk egy fájlt a böngészőből, a böngésző fejlécen keresztül kéri a szervert, hogy milyen tömörítést támogat. Például, ha a böngésző támogatja gzip és kienged kibontani. Ezeket az opciókat hozzáadja a Elfogadás-kódolás, fejléc, i.e.,
Accept-Encoding = ”deflate, gzip”
Ezért azok a böngészők, amelyek nem támogatják ezeket a formátumokat, nem veszik fel őket a fejlécbe. Amikor a szerver válaszol a tartalommal, fejlécen keresztül közli a böngészővel a tömörítési formátumot, Tartalomkódolás. Ezért, ha támogatja a gzip-t, akkor a fejléc így néz ki:
Content-Encoding = "gzip"
Az olyan böngészők fejlécei, mint a Firefox, amelyek támogatják a Brotli tömörítést, és a webszerver, amelyekbe Brotli modul van telepítve, így néz ki:
Accept-Encoding = ”deflate, gzip, br”
Content-Encoding = "gzip, br"
Ezért, ha a böngésző a legjobb tömörítési formátumot használja, és a webszerver nem, akkor ez nem jó, mivel a webszerver nem küldi vissza a fájlokat az előnyben részesített tömörítési algoritmussal. Ezért fontos a tömörítő modul telepítése a webszerverhez.
Szerver telepítése
Mielőtt továbblépnénk a Brotli konfigurációval, beállítjuk az Nginx szerverünket. Azelőtt sudo apt-get frissítés az Ubuntu terjesztést, és írja be a következő parancsokat a bash terminálon.
[e-mail védett]: ~ $ sudo apt-get update[e-mail védett]: ~ $ sudo apt-get install nginx -y
[e-mail védett]: ~ $ sudo service nginx start
A Brotli-tömörítés engedélyezéséhez az Nginx-ben lefordítjuk a .tehát a modulok az Nginx verzió részleteinek megfelelően. Mint látható, a következő parancs beírásával az Nginx verzió jelenik meg:
[e-mail védett]: ~ $ nginx -vnginx verzió: nginx / 1.18.0 (Ubuntu)
Használja a wget parancs az nginx verzió részleteivel együtt a forráskód letöltéséhez az Nginx webhelyéről.
[e-mail védett]: ~ $ wget https: // nginx.org / letöltés / nginx-1.18.0.kátrány.gz--2021-02-07 02: 57: 33-- https: // nginx.org / letöltés / nginx-1.18.0.kátrány.gz
Az nginx megoldása.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Csatlakozás az nginx-hez.org (nginx.org) | 3.125.197.172 |: 443 ... csatlakoztatva.
HTTP kérés elküldve, válaszra vár ... 200 OK
Hossz: 1039530 (1015K) [alkalmazás / oktett-adatfolyam]
Mentés ide: 'nginx-1.18.0.kátrány.gz '
nginx-1.18.0.kátrány.gz 100% [================================================= ====================>] 1015K 220KB / s 4-ben.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.kátrány.gz 'mentve [1039530/1039530]
Ezt a forráskódot használjuk a fordításhoz *.tehát bináris fájlok a Brotli-tömörítéshez. Bontsa ki a fájlt a következő paranccsal.
[e-mail védett]: ~ $ tar xzf nginx-1.18.0.kátrány.gzBrotli modul konfigurálása
Most a Google kiadta a Brotli modult az Nginx számára. Git-klónozzuk a modult a Google tárából.
[e-mail védett]: ~ $ git klón https: // github.com / google / ngx_brotli - rekurzív.Mi fogunk CD ba,-be nginx-1.18.0 mappa a dinamikus Brotli modul konfigurálásához.
[e-mail védett]: ~ $ cd nginx-1.18.0 /[e-mail védett]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli
Megjegyzés: A konfigurálás során a következő hibát kaphatja meg
./ configure: error: A HTTP átírási modulhoz PCRE könyvtár szükséges.A modult letilthatja a --without-http_rewrite_module használatával
opciót, vagy telepítse a PCRE könyvtárat a rendszerbe, vagy építse fel a PCRE könyvtárat
statikusan a forrásból nginx-szel a -with-pcre = használatával
Ebben az esetben futtassa a következő parancsot a pcre könyvtár telepítéséhez
[e-mail védett]: ~ $ sudo apt-get install libpcre3-dev -yModul összeállítása
A készítsen parancsot a modulok mappát az nginx-1 belsejében.18.0 könyvtár.
[email protected]: ~ $ sudo make modulokHasználjuk a cp parancs a másoláshoz ngx_http_brotli *.így fájlok a nginx-1.18.0 / objs mappát a modulok mappába.
[e-mail védett]: ~ $ cd / nginx-1.18.0 / objs /[e-mail védett]: ~ $ sudo cp ngx_http_brotli *.így / usr / share / nginx / modules
Most sorolja fel a fájlok tartalmát a ls parancs. Észre fogja venni, hogy két különböző modulfájlból áll, azaz.e.:
[e-mail védett]: ~ $ ls ngx_http_brotli *.ígyngx_http_brotli_filter_module.így
ngx_http_brotli_static_module.így
- Rendszeres Brotli modul: Az ngx_http_brotli_filter_module.így a modul menet közben tömöríti az összes fájlt, és ezért több számítási erőforrást igényel
- Statikus Brotli modul: Az ngx_http_brotli_static_module.így a modul lehetővé teszi előre tömörített statikus fájlok kiszolgálását, így kevésbé erőforrás-igényes.
Most a kedvenc szerkesztőjével nyissa meg az / etc / nginx / nginx fájlt.conf fájl a Brotli betöltési modulok hozzáadásához a Brotli konfigurálásának megkezdéséhez a következő sorok hozzáadásával:
[e-mail védett]: ~ $ sudo vim / etc / nginx / nginx.konf# Modul betöltése szakasz
load_module "modulok / ngx_http_brotli_filter_module.így";
load_module "modulok / ngx_http_brotli_static_module.így";
A konfigurációs mappák elérési útjait is tartalmazza / etc / nginx / conf.d / *.konf
és / usr / share / nginx / modules / *.konf a fenti fájlban, például:
http# Tartalmazza a konfigurációs mappákat
tartalmazza / etc / nginx / conf.d / *.konf;
include / usr / share / nginx / modules / *.konf;
A Brotli konfiguráció hozzáadásához nyissa meg az / etc / nginx / conf fájlt.d / brotli.konf
fájl a vim szerkesztő és engedélyezze a Brotli-t a következő konfigurációs irányelvek beállításával:
brotli on;brotli_static on;
brotli_comp_level 6;
brotli_types alkalmazás / rss + xml alkalmazás / xhtml + xml
text / css text / plain;
A "brotli off | be”Érték engedélyezi vagy letiltja a tartalom dinamikus vagy menet közbeni tömörítését.
A 'brotli_ static on ' lehetővé teszi az Nginx szerver számára, hogy ellenőrizze, hogy a .br kiterjesztések léteznek vagy sem. Ezt a beállítást opcióvá is alakíthatjuk ki vagy mindig. A mindig Az érték lehetővé teszi, hogy a kiszolgáló előre tömörített tartalmat küldjön anélkül, hogy megerősítené, hogy a böngésző támogatja-e vagy sem. Mivel a Brotli erőforrás-igényes, ez a modul a legalkalmasabb a szűk keresztmetszetek csökkentésére.
A "brotli_comp_level 6”Irányelv a dinamikus tömörítés minőségi szintjét 6-ra állítja. 0 és 11 között lehet.
Végül engedélyezze a dinamikus tömörítést bizonyos MIME típusoknál, míg a szöveges / html válaszok mindig tömörítve vannak. Ennek az irányelvnek az alapértelmezett szintaxisa a brotli_types [mime típus]. A konfigurációs irányelvről a Githubon talál további információt.
Mentse a módosításokat, gépeléssel indítsa újra az Nginx szolgáltatást „Sudo service restart nginx” és mindez kész.
Következtetés
A változások után észrevehet néhány nyilvánvaló javulást a teljesítménymutatókban. Ennek azonban van némi hátránya a csúcsidőben megnövekedett CPU-terhelés miatt. Az ilyen helyzetek elkerülése érdekében figyelje a CPU használatát; ha rendszeresen eléri a 100% -ot, számos lehetőséget használhatunk a preferenciáinknak megfelelően, például előre tömörített vagy statikus tartalom bemutatása, a tömörítési szint csökkentése és a menet közbeni tömörítés kikapcsolása.