Amikor programokat írunk, azt szeretjük szépen formázni. Az egy szinten lévő dolgokat ugyanolyan módon húzzuk beljebb tabulátorral. A változóneveket szép beszédes módon nevezzük el, és adott esetben dokumentációt is írunk hozzá. Ezek a hozzáadott értékek azonban csak a fejlesztők számára hordoznak értéket, a számítógép számára édes mindegy, hogy egy változót “a”-nak hívnak, vagy “downloadPercentage”-nek. Pontosabban egy kicsit gyorsabban végez a számítógép a rövidebb kóddal, hiszen azt kevesebb ideig tart letölteni, feldolgozni, stb.
Mindezeket az előnyőket szem előtt tartva a forráskódjainkat továbbra is szép, beszédes formában írjuk, azonban a késztermékben elvégzünk egy ún. minify folyamatot, melynek során a kódot azonos átalakítások segítségével módosítjuk úgy, hogy az rövidebb legyen, kisebb méretű, gép által gyorsabban feldolgozható.
A javascriptes kódjainkat minify-oljuk, azért mert… pontosan miért is?
- kisebb méret miatt hamarabb letöltődik
- a kevesebb kód hamarabb lefut
- a rövidebb változónevek miatt gyorsabban végez a javascript értelmező
- a rövidebb változónevek miatt kevesebb a heap (halom memória) használat
Csomó előny, ezért szeretjük! De nézzük csak pontosan mennyi is az annyi:
amit nem tartalmaz a mérés, az a különböző internet-típusok esetén a letöltési sebesség, ezért ezt külön táblázatban foglaltam össze:az eredmények 7-7 mérés átlagából jöttek ki
* valószínűleg az adatok szórásából adódó eltérés, valójában itt is azt várnánk, hogy a minify kisebb értéket produkáljon
Viszont az adatok még mindig torzak, mert a vizsgált static erőforrásból kimaradt a gzip-es tömörítés. Ha ezt is bekapcsoljuk, akkor máris árnyaltabb a kép:* valószínűleg az adatok szórásából adódó eltérés, valójában itt is azt várnánk, hogy a minify kisebb értéket produkáljon
74,1 és 35,6 kb volt a két méret gzip előtt. Majd gzip után ezek: 14,6 és 9,3 kb.
* valószínűleg az adatok szórásából adódó eltérés, valójában itt is azt várnánk, hogy a minify kisebb értéket produkáljon
Eredmény
És akkor a konklúzió sem maradhat el. Természetesen van olyan szempont ami szerint így jobb, vagy úgy jobb, de nem szabad figyelmen kívül hagyni sem az üzemeltetést (gzip) sem a célközönséget (gyenge 2G hálózat, vagy intranet ahol csak kábelen lehet elérni a hálót). Ráadásul egy olyan site-on aminek a betöltése ~1,8 másodperc, ott 0,2-3 ezredmásodpercen optimalizálni (0,01%-0,9%) olyan mintha a buszra egy héliumos lufit kötnénk, hogy csökkentsük a halálos áldozatok számát, ha esetleg a buszmegállóban a gyalogosok közé hajtana.
Mindezek mellett fejlesztési időben a kód minify-olása több másodpercet vesz igénybe minden egyes módosításkor. Érdemes mérlegelni, hogy kell-e ez, és hoz-e akkora ereményt, mint amekkorát várunk tőle.