Učitavanje više manjih JS filova vs manje većih

Pozdrav,
kao što pitanje kaže…dali se gubi što ako učitavamo više manjih JS filova, ili je to poželjno grupirati u manje većih filova?

Naravno da se gubi, svaki file je jedan request prema serveru, pa ako ih onda jos pozivas u headeru umjersto u footer imas jos veci problem, jer ti je cijela stranica blokana dok se js fileovi ne ucitaju.

Imas async i defer atribute za script tag u tome slucaju, https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#Attributes ali najcesce se to u danasnje vrijeme radi pa pomocu gulp-a, grunt-a sve skripte koje koristis minificiras, compactas i spicis sve u jedan js file. nakon toga je sve lakse.

Baci oko na http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/

Mi u firmi to sve ubacimo u jedan fajl, gulp radi odlicno posao :grinning:

Ili se prebaci na TLS + HTTP/2, requestovi su tada puno “jeftiniji”.

Nije da ne vjerujem…ali zanima me kakva je otprilike pozadina priče i konkretna računica.

Pretpostavimo da imamo 10 file-ova, svaki da je 20kb…to je ukupno 200kb. Ako to sve spojimo u jedan file, imat ćemo i dalje 200kb, ali samo 1 file.

E sad, da bi se osjetilo tko igra kakvu ulogu…trebalo bi znati koliko pojedini request uzme vremena samim time što postoji kao zasebni request …a koliko vremena otpada na učitavanje određenog broja kb? No ovo s kb i nema preveć veze…jer na to ne možemo utjecati (osim kompresiranja, naravno …što nije tema ovdje)

Ostaje znači pitanje, o čemu ovisi delay koji stvara jedan request? Pretpostavljam da postoji onaj ping time…vrijeme da upit stigne tamo…i odgovor natrag. No, nije mi jasno zašto se taj ping time zbraja za svaki request? Ako browser treba loadati 10 file-ova, on pošalje upite za svaki od njih …i imamo jedan ping time, bez obzira na njih deset. Ili browser prvo učita prvi file, pa tek onda šalje upit za drugi file…što bi uzrokovalo zbrajanje ping time-a za svaki file??

Problem je sama HTTP 1.1 tehnologiju, evo online primjera :wink:

Znači, kad bi ti server podržavao HTTP 2, problem s 10 fajlova više ne bi bio problem…