Egy webes erőforrás a hálózaton tömörítve érkezhet, majd a böngésző kibontja és feldolgozza. Emiatt a letöltött bájtok száma kisebb lehet, mint a ténylegesen értelmezett HTML-, CSS- vagy JavaScript-tartalom. A két méret eltérő teljesítménykérdésre válaszol.
A HTTP-fejléc-elemző a kiszolgálás megértésében, a letöltésiidő-kalkulátor az adatátviteli becslésben segít. A cikk számításai egyszerűsített hálózati modellek; valós betöltési időt külön mérés igazolhat.
Két méret egy erőforráshoz
Legyen a kibontott szöveges erőforrás 1 200 000 bájt, a tömörítetten átvitt tartalom 300 000 bájt. Az átvitt rész az eredeti méret 25%-a, a csökkenés 75%.
A tömörítési arány itt eredeti / tömörített formában 4:1. Más eszköz százalékos méretet vagy megtakarítást nevezhet aránynak, ezért a mutató definícióját fel kell tüntetni. A 25% és a 75% ugyanazt a helyzetet írja le eltérő alappal.
A példában tízes alapú bájtértékeket használunk. A kB és KiB megkülönböztetése a kijelzett számokat módosíthatja, ezért összehasonlításkor a nyers bájtadat a legátláthatóbb.
Elméleti átviteli idő
Ha a kapcsolat hasznos adatátviteli sebessége 10 000 000 bit/s, a tömörített tartalom 300 000 × 8 = 2 400 000 bit. A tiszta átviteli idő 2 400 000 / 10 000 000 = 0,24 másodperc.
A tömörítetlen 1 200 000 bájthoz ugyanilyen feltételekkel 0,96 másodperc tartozik. A különbség 0,72 másodperc. Ebben nincs kapcsolatfelépítés, kiszolgálói várakozás, fejléc, párhuzamos versengés vagy feldolgozás.
A névleges internetcsomag sebességét ezért ne tekintsd automatikusan a fájl rendelkezésére álló hasznos sebességnek. A valós oldalon több erőforrás és több késleltetési összetevő is megjelenhet.
Mit mond a Content-Encoding?
A Content-Encoding fejléc jelzi az alkalmazott tartalomkódolást, például gzip vagy br. Ez a tartalom hálózati reprezentációjának tulajdonsága. A kliens és a szerver egyeztetése is meghatározhatja, milyen változat érkezik.
Egy fájl kiterjesztéséből vagy a böngészőben látható szövegből nem mindig derül ki, hogy átvitel közben tömörítve volt-e. A tényleges válaszfejléceket és az átvitt méretet együtt kell megvizsgálni. Gyorsítótárból kiszolgált erőforrás esetén külön állapotot mérsz.
A Content-Length értéke kódolt tartalomnál a kódolt reprezentáció méretére vonatkozhat, de nem minden válaszban szerepel. Egy hiányzó fejléc nem bizonyítja a tömörítés hiányát.
Miért nem ennyi a memóriaigény?
A 300 000 bájtos hálózati tartalom kibontva 1 200 000 bájt lehet, a feldolgozás pedig további adatstruktúrákat hozhat létre. DOM-elemek, JavaScript-objektumok vagy más futásidejű reprezentációk mérete külön kérdés. A tömörített fájlméretből ezért nem következik azonos böngészőmemória-használat.
Egy saját tesztben külön mérd a hálózati forgalmat, a kibontott erőforrás méretét és a feldolgozási időt. Ha egy nagy program csak néhány szükséges funkciót használ, a tömörítés mellett a felesleges kód elhagyása is vizsgálható. A változtatás hatását funkcionális tesztnek is igazolnia kell.
Összehasonlítható mérések
Az előtte és utána teszt ugyanazon erőforrásra, hasonló hálózati beállításra és ismert gyorsítótár-állapotra vonatkozzon. Egy hideg és egy meleg gyorsítótáras betöltés különbségét könnyű tévesen a tömörítés javulásának tulajdonítani.
Rögzítsd a pontos URL-t, az ellenőrzés idejét, a kódolást, az átvitt és kibontott méretet. A saját példánkban a 75%-os méretcsökkenés bizonyított aritmetikai eredmény, a webhely teljes gyorsulására viszont nem ad közvetlen állítást.
Gyakori kérdések
Minden fájl ugyanannyira tömöríthető?
A tartalom szerkezete és korábbi tömörítése is számít. A példabeli 75% nem általános megtakarítási arány.
A kisebb letöltés biztosan kisebb processzorterhelés?
A kibontás és a feldolgozás külön munkát igényel. A hálózati nyereséget és a futásidejű terhelést külön kell mérni.
A 0,24 másodperc a teljes oldalbetöltés?
Csak a példabeli tartalom idealizált adatátviteli ideje. A teljes felhasználói várakozás több összetevőből áll.