Digitális és informatikai

HTTP-tömörítés: az átvitt fájlméret nem azonos a böngészőben feldolgozott mérettel

Bájtban és másodpercben hasonlítunk össze egy tömörített és egy tömörítetlen erőforrást. A hálózati megtakarítást külön választjuk a memória- és processzorigénytől.

Dajka Gábor5 perc olvasás

A webes erőforrás tömörítése a hálózati bájtokat csökkenti, miközben a böngészőben kibontott tartalom mérete változatlan maradhat. A várakozásból ezért azt a részt kell elkülönítened, amelyet ténylegesen az adatátvitel tölt ki. A kapcsolat, a kiszolgálás és a feldolgozás mérését tartsd meg a méretadatok mellett.

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.

Content-Encoding mellett a Content-Length méretadata a kódolt reprezentációra vonatkozik, 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.

A 75%-os méretcsökkenés nem ugyanekkora teljes időcsökkenés

Készíts egy kizárólag egymás után végrehajtott lépésekből álló időmodellt. A kiszolgálásra és kapcsolatkezelésre együtt 0,60 s, a feldolgozásra 0,16 s jut. Ezeket most változatlannak feltételezzük; közöttük a korábbi tömörítetlen átvitel 0,96 s. Az összes idő így 0,60 + 0,96 + 0,16 = 1,72 s.

A tömörített átvitel 0,24 s-os idejével ugyanebben a modellben 0,60 + 0,24 + 0,16 = 1,00 s adódik. A csökkenés 0,72 s, a teljes korábbi időhöz képest 0,72 / 1,72 ≈ 41,86%. A 75% továbbra is a tartalom bájtméretének és a külön vizsgált átviteli rész idejének csökkenése.

A valós oldal több átfedő feladatot és eltérő kibontási költséget tartalmazhat. A példából ezért csak a nevezők különbsége következik, mért oldalgyorsulás nem. A jelentésben külön nevezd meg az átvitt bájtok csökkenését és a felhasználó szempontjából kiválasztott időmutató változását.

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.

Módszertani forrás

MDN – Content-Encoding

Záró tudáspróba

Válassz kérdésenként egy választ, és jegyezd fel a betűjelét. Minden helyes válasz 1 pont; a hibás, kihagyott vagy több betűvel jelölt válasz 0 pont. Legfeljebb 3 pontot szerezhetsz. A megoldókulcsot a válaszadás után olvasd el.

1. A soros modellben 0,60 s várakozás, 0,24 s átvitel és 0,16 s feldolgozás van. Mennyi az összes idő?

  • A) 0,24 s
  • B) 1,00 s
  • C) 0,76 s

2. 1,72 s-ról 1,00 s-ra csökken az összes idő. Mekkora a relatív csökkenés?

  • A) 75%
  • B) Körülbelül 41,86%
  • C) 72%

3. A 300 000 bájtos tömörített átvitelből következik, hogy a böngésző összesen ugyanennyi memóriát használ?

  • A) Igen, ha a Content-Encoding jelen van.
  • B) Igen, a hálózati és memóriaméret azonos.
  • C) Nem; a kibontott tartalom és a létrejövő adatstruktúrák külön méretet jelentenek.

Megoldókulcs és értelmezés

1. B. 0,60 + 0,24 + 0,16 = 1,00 s. Az átvitel csak egy része a modellnek.

2. B. A 0,72 s különbséget az eredeti 1,72 s idővel osztjuk.

3. C. A példabeli kibontott erőforrás 1 200 000 bájt, és a feldolgozás további reprezentációkat hozhat létre.

0–1 pont: A „75%-os méretcsökkenés” részben külön számold az átviteli és teljes időt, és minden százalékhoz írd oda a nevezőt.

2 pont: A hibás vagy kihagyott válasz magyarázata alapján keresd vissza a kapcsolódó számítást, majd oldd meg újra azt a kérdést.

3 pont: A három feladatban helyesen alkalmaztad a cikk összefüggéseit. A következő mérésben a bájtadatot és a kiválasztott betöltési időmutatót azonos gyorsítótár-feltételek mellett rögzítsd. A rövid próba csak ezeket a tanulságokat ellenőrzi.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás