hm, probacu da budem koncizan:
daklem, stavljanje header-a i footer-a u cgi-script nije bas najbolja ideja, u situacijama kada je brzina ucitavanja bitna. razlog je jednostavan - ako footer ima npr 50 redova koda, tih 50 redova ce da se zalepe na svaku stranicu i svaki put vuku sa servera. i tako, 50 po 50, i ode sve do djavola...
bas nedavno (pre par nedelja) sam optimizovao (sopstveni) sajt (mozes ga videti na
http://www.timesystem.ch). elem, na tom sajtu bukvalno sve ide iz cgi-(perl)scripta: preracunava se navigacija prema trenutnoj poziciji i dinamicki izbacuje meni, parsira u glavni deo html-stranica itd. e sad, problem je sto "stalni" elementi (header, footer, leva navigacija, desna navigacija) uzimaju oko 50 kb, za svaku stranicu (razlog je sto su tabele graficki zakomplikovane u p.m. - dizajnerska egzibicija, btw krajnje nepotrebna). dakle, svaki put browser vuce sa servera 50 kb + realan sadrzaj (ono u sredini, tj ono sto je, na kraju krajeva, i bitno).
e sad, kako ovo optimizovati? pa, prosto, uzmes npr funkciju create_menu(), i preradis je na javascript. cgi i dalje racuna stavke menija i podmenija, ali umesto da sam kreira taj menu, samo prosledjuje vrednosti javascript-u. Na primer:
... perl code...
print "<script language='JavaScript'>";
print "var menu_title=new Array(), menu_href=new Array();";
for($i=0;$i<@menu_title;$i++){
print "menu_title[$i]=$menu_title[$i];";
print "menu_href[$i]=$menu_href[$i];";
}
print "create_menu();";
print "</script>";
(au ala ovaj forum jede backslash-ove...)
... funkcija "create_menu()" je javascript funkcija koja se nalazi u eksternom js fajlu, koji prikljucis svakoj stranici, preko:
<script language="javascript" src="externi_js_file.js">
create_menu() izgleda gotovo isto kao sto bi izgledala u perlu (naravno uz razlike u sintaksi), jedino sto sada umesto da imas:
print "....";
print "....";
(itd)
stoji:
var text="";
text+="....";
text+="....";
...
document.write(text);
koja je razlika? pa, kada browser jednom pristupi tom externom js fajlu, iskesira ga i svaki naredni put ga "izvlaci" bukvalno trenutno; bitan deo posla odradjuje cgi (vadi citat, ili sracunava menu, ili skuplja datum, itd, itd), a onda prikaz prepusta client-side scriptu. dakle, umesto velikih blokova koda u cgi-scriptovima, imas jednostavno prosledjivanje parametara i pozive klijent-skriptova.
sto se pomenutog sajta tice, "obavezan" sadrzaj sveden je sa 50 na 8 kb, a brzina je veca 3-5 puta.
nadam se da nisam mnogo zakomplikovao?
[
Ovu poruku je menjao dukenukem dana 09-27-2001 u 11:13 PM GMT]
= come get some =