Avatar billede bmdk Nybegynder
01. april 2009 - 21:21 Der er 14 kommentarer

AJAX Performance spørgsmål

Hey eksperter,

Sidder i øjeblikket og er ved at lave nogle test hvor jeg sammenligner almindelige postbacks med AJAX postbacks for at måle, hvor meget hurtigere de er.

Jeg er kommet ud med 3 forskellige resultater for 3 forskellige sider.

Side 1: en ganske almindelig postback side uden AJAX på.

Side 2: en AJAX enabled side hvor jeg har gjort brug af en Updatepanel.

Side 3: en AJAX enabled side hvor jeg har gjort brug af opensource frameworket 'Anthem' - dvs. uden Updatepanel.

Side 1 statistik:
Bytes sent: 986
Bytes recieved: 1124

Side 2 statistik:
Bytes sent: 810
Bytes recieved: 908

Side 3 statistik:
Bytes sent: 770
Bytes recieved: 434

Mit spørgsmål til jer er så: hvorfor er den ene AJAX løsning betydeligt hurtigere end den anden? Er det udelukkende fordi der bliver genereret alt muligt bagvedliggende kode, når man gør brug af et Updatepanel i Visual Studio, eller?

På forhånd tak for hjælpen!
Avatar billede bmdk Nybegynder
01. april 2009 - 21:23 #1
Skylder måske at sige, at det eneste der er på siderne er en Textbox til at skrive input i, en knap til at submit det og en label til at skrive det ud i.
Avatar billede olebole Juniormester
02. april 2009 - 00:45 #2
<ole>

Ajax findes i et utal af forvandskede versioner, hvor langt de fleste desværre blot er en direkte videreførsel af de iframe-løsninger, vi alle legede med for 10 år siden. Stort set uden forbedringer og i ligeså forældet, uhensigtsmæssig, invalid og dårligt performende kode. Eneste forskel er somregel, at iframe'en er skiftet ud med et XMLHttpRequest objekt  :o|

Glem alt om alle versioner, hvor du formaterer HTML'en på serveren. Det patter alt for mange resourcer på serveren - og bruger den invalide og uhensigtsmæssige innerHTML property.

Når man bruger Ajax, bør data formateres som XML eller JSON (hvoraf det sidste fylder fra væsentligt til dramatisk meget mindre) - og indsættes med DOM på klienten.

De libraries, jeg kender til (og det er trods alt en hel del), er ikke noget at anbefale. Problemet er, at det kræver en hel del at skrive den slags, så det er ikke noget, man lige lærer på en weekend eller to. Man kunne få den tanke, at de to ting hænger sammen  ;o)

/mvh
</bole>
Avatar billede bmdk Nybegynder
02. april 2009 - 01:20 #3
Hey Ole! og mange tak for dit altid gode svar.

Jeg kan godt se hvad du skriver - og du har ret: man lærer det ikke lige på en weekend og jeg har heller ikke en weekend til at få lavet disse tests færdige i ;)

Ellers er jeg fuldt ud enig med dig mht. XML og JSON!

Men har du et mere direkte bud på, hvorfor den ene AJAX løsning i min statistik er så meget forskellig i forhold til den anden?

Tak igen!

/bo
Avatar billede olebole Juniormester
02. april 2009 - 10:55 #4
Forskellen i 'Bytes sent' er ikke større, end det kan være et enkelt felt i en HTTP-header (f.eks. sat med med 'setRequestHeader').

Forskellen på mere end en faktor 2 i 'Bytes recieved' kunne tyde på, at den ene returnerer data i HTML, mens den anden i XML/JSON - men jeg ved det ikke objektivt
Avatar billede bmdk Nybegynder
02. april 2009 - 12:26 #5
Jeg tror du har helt ret, Ole - jeg testede det lige igen for at se, hvad det var der rent faktisk blev sendt tilbage. Forskellen var, som du skriver, at det AJAX site med updatepanel returnerer i HTML og Anthem sitet i JSON!

Smider du et svar? :)

Tak for hjælpen!
Avatar billede olebole Juniormester
02. april 2009 - 12:54 #6
Selvtak. I PHP5 er det sådan, at der findes to native json-funktioner (encode og decode), og de JSON-formaterer mindst 4-5 gange hurtigere, end du kan HTML-formatere samme mængde data med 'manuel' PHP. Dertil kommer den væsentligt mindre datatransport (mere end 50% besparelse ved JSON). Valget er enkelt  ;o)
Avatar billede tarraq Nybegynder
02. april 2009 - 17:14 #7
Mit personlige valg at javascript framework er "mootools". Jeg er ikke helt så religiøs som olebole når det kommer til det ;)

Med hensyn til test-resultaten, så er alle standalone frameworks lavet til at minimere trafikken (selv om ikke alle er lige successfulde).

Et updatepanel, så vidt jeg kan regne ud, er et .net-komponent fra Visual Studio. Jeg ved godt at .net er meget populært og mange bruger visual studio, men jeg kan personligt ikke se den store forskel fra visual studio og til frontpage, hvis man bruger den indbyggede editor. Når det tager længere med updatepanel, er det mit gæt at det er fordi der genereres kode der indsættes for at tage højde for alt muligt andet, og specifik kode til det felt på serveren også.

Og så som olebole også nævner, skal der helst kun køre rent data frem og tilbage mellem klient og server.

Mvh,
Michael
Avatar billede olebole Juniormester
02. april 2009 - 23:44 #8
Der er ikke tale om religiøsitet bag min modstand mod at bruge innerHTML, men om reelle uhensigtsmæssigheder ved brugen - den totale inkompatibillitet med XHTML - og så det faktum, at store, tunge browsere, der koster gigantiske formuer at udvikle på, er til stor ulempe for WWW's brugere og udviklere. Derfor bør vi undgå invalide properties, når der er valide og bedre alternativer.

Derudover burde MooTools vel regnes for at være i strid med antiterror lovene, når man tænker på det dramatiske initiale download af unødvendige JS-koder, brugeren bæltebombes med!  =)

Der er rigtig mange gode idéer, hensigter og tiltag i MooTools, men library'et er desværre skrevet efter den forlængst afdøde, amerikanske pianist Liberace's motto:
    "Too much of a good thing is just ..... GORGEOUS!"

- uden sans, hvornår nok er nok  ;o)
Avatar billede tarraq Nybegynder
02. april 2009 - 23:53 #9
Lige præcis det jeg mente ;)
innerHTML er grimt, det er vi enige om :)

Så lige ved et tilfælde at jeg snart har været på eksperten.dk i 10 år. Vi er sq ved at blive ikke helt unge, du :)

Hvilket library vil du anbefale, hvis det endelig skal være?
Avatar billede olebole Juniormester
03. april 2009 - 00:35 #10
Sålænge hver dekade rummer ligeså mange erfaringer og nye ting, der bliver lært - og på alle hylder - er det zq stadig en fornøjelse at blive 10 år ældre, du  ;o)

Jeg vil ikke anbefale nogen af dem, jeg kender. Jeg bruger noget, jeg selv har skrevet, og som jeg er igang med at skrive om i et modulariseret library, som kan 'skræddersyes' ved forskellige sammensætninger.

Der er ritig meget mudder i begreberne, og størstedelen af funktionaliteterne i de fleste 'Ajax' libraries i åben sovs er i virkeligheden hjælpekode til dynamisk HTML ... ikke specielt Ajax relateret kode  =)
Avatar billede tarraq Nybegynder
03. april 2009 - 00:48 #11
Så sandt.
Men indtil du releaser dit eget, så..
Kender du http://directwebremoting.org/ ?

- M

P.s. BMDK, beklager vi sådan har highjacket din tråd. Olebole og jeg arbejdede sammen på frontline af internetudviklingen, dengang man rent faktisk *skulle* tage IE på mac seriøst og havde mareridt om javascript-enginenen i Netscape 4.03.
Avatar billede bmdk Nybegynder
03. april 2009 - 01:33 #12
Jamen det skal I ikke beklage! Jeg synes kun det er fint :) har fulgt med og sidder og suger til mig.

Som et sidespring til selve diskussionen og emnet generelt: så kunne jeg godt tænke mig, at dengodekode.dk blev lavet færdig på et tidspunkt ;)
Avatar billede olebole Juniormester
03. april 2009 - 09:34 #13
tarraq >> Jeg 'kender' det, men har ikke decideret arbejdet med det.

bmdk >> Det er vi flere, der godt kunne tænke sig  ;D
Avatar billede bmdk Nybegynder
06. november 2009 - 02:23 #14
.. og ligeledes i denne - et svar tak! ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester