Optimizacija strani - združevanje datotek

Pozdravljeni,

imam eno vprašanje. Namreč na strani imam preveč HTTP zahtevkov in posledično upočasnjevanje Apacheja. Med branjem razne dokumentacije sem zasledil, da je priporočljivo združiti več datotek v eno (.js, .css, ...).

Na moji strani pa je zadeva takšna, da se nekatere .js, .css datoteke prikazujejo samo članom oziroma obratno.

Moje vprašanje je tako naslednje:
- je bolje združiti vse datoteke (npr. js) v eno, kljub temu da recimo 30% uporabnikov sploh ne bo potrebovalo skripte
- ali "privarčevati" na porabi/bandwidth in razdeliti .js datoteke na več delov?

Problem je tudi ker je večina datotek jquery skript in v prihodnje se bo prikazala težava pri posodabljanjem le teh z najnovejšimi verzijami, če jih združim v eno.

Še to, recimo nekaterih .js datotek sploh ne potrebujem v forumu ampak samo v galeriji.

Hvala vsem za nasvete!

21 odgovorov

Popravek na moj post... v osnovni nisem mislil fizični strežnik, ampak samo programski.
Nginx pobere manj zmogjivosti kot apache.
Če pa težko vse na enem hardware laufa, potem pa kot je predlagal Spinx.

Popravek se na moj post : jaz sem pa mislil, da imas trenutno shared gostovanje. Ce imas VPS ti nima kaj tezit, da je prevec zahtevkov, saj porabis samo toliko resourcov kot ti jih je dodeljenih. Ce gres na nov vps potem pa res serviraj samo staticne vsebine z nginxom.

Ce imas VPS ti nima kaj tezit, da je prevec zahtevkov, saj porabis samo toliko resourcov kot ti jih je dodeljenih.

Tole tudi meni ni bilo najbolj jasno...

Ampak se pojavlja problem, ki sem ga že parkrat omenil, da se mi strežnik 2-3x dnevno sesuje verjetno zaradi preobremenjenosti. Ni pa nujno, da 100% zaradi tega, ker je verjetno kriva tudi starejša verzija apacheja in PHP-ja in možno je da se to dogaja tudi zaradi nekompatibilnosti kakšne PHP skripte.

Falš programiranje tudi pripelje do tega...
Optimiziranje slabe kode lahko privede do 10x in več hitrejšega izvajanja.

1

Kako je kaj s kompresiranjem npr. *.css in *.js datotek? Verjetno se uporabniku hitreje naloži stran, saj je za prenos potrebno manj podatkov, ampak se pri samem kompresiranju uporabi več CPU procesov - to pa je verjetno nasprotno kar želim doseči - zmanjšati obremenjenost strežnika?

Glede optimiziranje kode ne vem, če lahko na navadni strani prideš do konkretnih rezultatov. Druga stvar je optimiziranje sql stavkov - tu se da naredit največje napredke. Pa keširanje v kodi, če še ne delaš tega.

1

ja, kot je rekel SpinX... preveri querye in dodaj kaksen index na tabelo
Na enem projektu sem pri dizajnu baze pozabil dodat index in se je stran loadala vec kot 5 sekund. Z indexirano tabelo je cas zelo pod sekundo, loada na serverju pa ni sploh.

Beležim daljše sql querye od 1 sekunde in tu ni problema tudi sama obremenjenost mysql serverja je zanemarljiva. Bom pa vseeno še 1x preveril vse query, če slučajno prihaja do kakšnih težav.

Drugače pa imam kar zahtevne querye saj moram izbrati naslednjo in prejšnjo fotografija glede na več kriterijev in indexiranje tabel kar tako na uč prinese samo še dodatne težave.

Sem mislil napisat da glede na to da imas stran s fotkami, ki so najvecje, ni treba tolk ubadat z majhnimi CSS/JS fajli, ampak sem sel prej pogledat:

350KB za JS in 100KB za CSS? Ne vem, meni se zdi to ogromno. Si sur da rabis vse te stvari?

Glede CPU pa se pridruzujem Juretu, tukaj zadaj je najbrz kak programski glitch, ki bi ti prisesel najvecjo pohitritev/optimizacijo, ce ni nekih ubitacnih SQL querijev.

Teh 350KB JS in 100KB CSS verjetno zaseda tista facebook skripta, ki je vstavljena na strani. Drugače pa že kompletiram datoteke in bo potem js zasedal max 100kb in CSS okoli 40KB.