Neapdoroto DEFLATE į GZIP srauto konverteris
Neapdoroto DEFLATE konvertavimas į GZIP srautą įpakuoja suspaustus duomenis į standartinį konteinerį su metaduomenų antraštėmis, kad operacinės sistemos ir žiniatinklio įrankiai galėtų juos tinkamai perskaityti.
Formatų palyginimas ir techninės specifikacijos
| Specifikacija | DEFLATE | GZIP |
|---|---|---|
| MIME tipas | application/zlib | application/gzip |
| Tipas | raw DEFLATE stream | DEFLATE stream container |
| Glaudinimas | LZ77 + Huffman coding | DEFLATE (RFC 1951) |
| Standartinė specifikacija | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Maginės baitų antraštės (Magic Bytes) | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
Formato apžvalga ir taikymas
Neapdoroti DEFLATE duomenų srautai sudaryti iš suspaustų baitų be jokių failų antraščių ar pabaigos kontrolinių sumų. Žiniatinklio naršyklės ir tinklo įrankiai dažnai sunkiai apdoroja šiuos plikus srautus, nes jiems trūksta metaduomenų, tokių kaip originalūs failų pavadinimai, pakeitimo laiko žymos ar operacinės sistemos identifikatoriai. Šių neapdorotų duomenų įpakavimas į GZIP konteinerį išsprendžia šias suderinamumo problemas. Kūrėjai susiduria su neapdorotais DEFLATE srautais tinklo protokoluose, tokiuose kaip HTTP glaudinimas, PNG vaizdų dalys ir ZIP archyvai. Kai šiuos srautus reikia išsaugoti kaip atskirus failus komandų eilutės įrankiams arba standartiniams žiniatinklio atsisiuntimams, inžinieriai juos konvertuoja į GZIP formatą. Tai užtikrina, kad išskleidimo priemonės akimirksniu atpažįsta failo tipą ir išskleidžia turinį nemesdamos klaidų.
Techninės specifikacijos ir kodekų apžvalga
Neapdorotas DEFLATE (application/zlib arba neapdorotas srautas) naudoja LZ77 slankiojo žodyno atitikimo ir Hafmano kodavimo derinį baitų sekoms glaudinti be jokių rėmų antraščių. GZIP konteineris (application/gzip) paima šį tikslų DEFLATE turinį ir apgaubia jį griežta 10 baitų antrašte, kurioje yra dviejų baitų magiškojo skaičiaus parašas (0x1F, 0x8B), glaudinimo metodo vėliavėlės, pakeitimo laiko žyma ir operacinės sistemos ID. GZIP struktūra taip pat prideda 8 baitų pabaigos priedą su CRC32 kontroline suma duomenų vientisumui patikrinti ir nesuspausto failo dydžiu modulo 2 pakelta 32 laipsniu.
OS ir naršyklės suderinamumas
GZIP srautai pasižymi visuotiniu suderinamumu visose šiuolaikinėse operacinėse sistemose, įskaitant Linux, macOS ir Windows. Komandų eilutės įrankiai, tokie kaip gzip, gunzip ir 7-Zip, natūraliai skaito GZIP failus. Naršyklės automatiškai tvarko GZIP išskleidimą gaudamos HTTP atsakymus iš serverių, nors neapdorotam DEFLATE dažnai reikia pasirinktinės analizatoriaus logikos JavaScript aplinkose arba WebAssembly moduliuose.
💡 Naudinga informacija
Visada patikrinkite, ar jūsų išskleidimo įrankis teisingai nuskaito GZIP pabaigos priedą, nes sugadintos CRC32 kontrolinės sumos privers išskleidimo įrankius nutraukti darbą, net jei pagrindinis DEFLATE turinys yra nepažeistas.
Formatų palyginimas ir techninės specifikacijos
10 MB neapdorotas DEFLATE srautas, konvertuotas į GZIP failą, prideda nedidelę 18 baitų apimtį antraštėms ir pabaigos priedams. Šio failo perdavimas užtrunka apie 0.04 sekundės per 5G ryšį, maždaug 0.2 sekundės per standartinį 4G tinklą ir mažiau nei 0.01 sekundės per gigabito šviesolaidžio ryšį.
Dažnai užduodami klausimai
Kaip konvertuoti neapdorotą DEFLATE į GZIP srautą neprarandant kokybės?
Abu formatai naudoja nuostolių neturintį glaudinimą, pagrįstą tuo pačiu DEFLATE algoritmu. Konvertavimas tarp jų tiesiog prideda konteinerio antraštes ir kontrolines sumas aplink esamus suspaustus baitus, vadinasi, įpakavimo proceso metu nevyksta jokie duomenų nuostoliai.
Kuo skiriasi neapdorotas DEFLATE nuo GZIP srauto?
Neapdorotas DEFLATE turi tik suspaustus duomenis be jokių identifikuojančių antraščių ar pabaigos priedų. GZIP srautas yra standartizuotas failo konteineris, kuris prideda 10 baitų antraštę ir 8 baitų pabaigos kontrolinę sumą prie neapdorotų DEFLATE duomenų metaduomenų stebėjimui ir klaidų aptikimui.