Avatar billede intenz Novice
28. maj 2007 - 00:22 Der er 11 kommentarer og
2 løsninger

AJAX kald - flere eller samlet?

Hej

Jeg er igang med at udtænke lidt hvordan opbygningen af site skal foregå med ajax.
Mit spørgsmål går ud på om der er fordele i at lave et 'stort' ajax kald til en fil. Eller man skal opbygge det ved at lave kald til flere filer.

Altså hvis jeg har to forskellige dele af en side. De skal bruge data1 og data2 ved brug af ajax.
Skal jeg hente det fra _en_ fil der sender en stor datamængde tilbage? Eller skal jeg opbygge det som funktioner der henter hver deres data fra forskellige filer?
Det data der skal hentes ud har ingen sammenhæng med hinanden.

Er der nogle umiddelbare fordele/ulemper ved en af metoderne?
Avatar billede w13 Novice
28. maj 2007 - 00:30 #1
Generelt belaster det serveren mindst, når du henter det hele ned samtidig - ligesom når man henter fra en database, hvor det også bedst kan betale sig at konstruere alt i en string og så derefter udskrive stringen (evt. med getRows-funktionen, hvis man bruger ASP). Og hvis du så bare har en generel JavaScript-funktion, som kalder ajax-filer, så skulle det være ret godt. :)
Derfra handler det så bare om, hvordan du sender de hentede data til de elementer, de skal lægges i..
Avatar billede a1a1 Novice
28. maj 2007 - 02:24 #2
alt (data) på en gang kræver jo at du skal downloade mere "første" gang (evt. billeder bliver jo først hentet når de "står" i htmlen).

Hvis det bare er 10-20 sider tekst er det måske en idé, men forestil dig at det var eksperten du skulle lave det med? (ca. 800.000 spørgsmål og tilhørende svar)

hvis vi snakker en "standard" hjemmeside med en menu i den ene side og content i den anden side, ville jeg hente hele menuen ud til at starte med, lave en "alm" javascript funktion til menuen (så kan man åbne og lukke submenuer). Når der så klikkes på et menu punkt bruger du dit ajax til at loade den sides content.
Avatar billede thesurfer Nybegynder
28. maj 2007 - 10:56 #3
a1> Eksperten-analogien passer ikke.. man henter jo kun 1 spørgsmål ad gangen, og ikke 800.000.. Og når billeder og andet snask er loadet første gang, er det jo allerede cachet.. :-)

intenz> Husk at lave websitet sådan, at det også kan bruges uden bruger af AJAX.. egentligt burde siden også virke uden brug af JavaScript, men så går man også efter 100% af brugerene.. :-)
Avatar billede roenving Novice
28. maj 2007 - 11:02 #4
*lol*

-- begge dele kan være korrekt !-)

Principielt vil det være rigtigt at have adskilte ting adskilt, men så kommer vi til praksis, og der bliver det afgørende, hvor stor en download bliver og hvor ofte det forekommer, samt sandsynligheden for at man alligevel skal hente resten !o]

-- hvis dine 2 datasæt er fuldstændig uafhængige og heller ikke medfører konsekvenser for hinanden, vil det grundlæggende skulle være to forskellige kald ...

Men hvis den samlede download f.eks. ikke er ret stor, er det jo tåbeligt ikke at hente den, når man nu er i gang ...

-- og hvis download af noget i det ene datasæt medfører at det andet datasæt skal hentes, er det selvfølgelig også tåbeligt ikke at gøre det i et hug ...

-- eller hvis de fleste alligevel vil få brug for det andet datasæt, er det jo også smart, at det er til rådighed for dem ...
Avatar billede intenz Novice
28. maj 2007 - 19:23 #5
>thesurfer
Ja, det ved jeg. Den diskussion behøver vi ikke komme ind på :)

>roenving
"-- hvis dine 2 datasæt er fuldstændig uafhængige og heller ikke medfører konsekvenser for hinanden, vil det grundlæggende skulle være to forskellige kald ..."
Det er netop den situation jeg er i. Og jeg ville også helst skulle opdele det i mindre filer, for at kunne holde en simpel struktur.

Jeg var bare i tvivl om der var noget der talte imod at gøre det sådan. Og det er ikke 800.000 sider der skal hentes :) Bare 'normalt' størrelse indhold (1-20 kb max)

Jeg savner generelt nogle overordnede tutorials omkring hvordan strukturen i programmeringen skal foregå. Jeg kan godt læse og programmere ud fra alm. dokumentation til sproget, men der står bare ikke hvilken overordnet struktur man skal benytte sig af ;) Det er nok her erfaringen kommer ind i billedet :)
Avatar billede roenving Novice
29. maj 2007 - 13:16 #6
Tjah, og så en god del sund fornuft overført til denne virkelighed !-)

Skæg for sig og snot for sig, sagde min gamle regnelærer ofte, og det er nok meget sundt at huske det ...

-- men som det fremgår af mit indlæg, så er der ikke en endegyldig sandhed, et sted midt imellem, kunne f.eks. være, at sætte en hentning af resten i gang, når den første stump er hentet, men det er selvfølgelig under den forudsætning, at den samlede download er klart overkommelig ...

-- man kunne så arbejde med javascript-variable eller med elementer, der skjules og vises !o]
Avatar billede olebole Juniormester
30. maj 2007 - 11:53 #7
<ole>

Når du skriver "Bare 'normalt' størrelse indhold" bliver jeg lidt nervøs for, om du kunne finde på at bruge AJAX til alm. indhold på et website. Det må du _endelig_ ikke! ... og endelig heller ikke bruge det til en menu.
Søgemaskiner kan ikke indeksere dine sider, hvis indholdet er dannet med AJAX - og det er jo noget rigtig skidt.

"Jeg kan godt læse og programmere ud fra alm. dokumentation til sproget" ... nej, det kan du formodentlig ikke.
Når du koder AJAX, skal du have _meget_ stor viden og _meget_ stor erfaring ... også indenfor emner, som ikke omhandles af sprogstandarder. F.eks. er IE's garbage-collection lidt af en 'hysterisk kælling' at tumle - og det er der desværre ikke mange, der tager højde for. Den slags afslører sig ofte, når man kikker i Windows' TaskManager, mens man udfører en række AJAX-kald (med tilhørende DOM-handlinger). Her stiger IE's hukommelsesforbrug ofte dramatisk - og ofte går det helt galt, når man navigerer til en ny side ... IE får ganske enkelt ikke ryddet op i hukommelsen.

Der er egentlig ikke noget nyt i dette, men når man laver alm. websider, skjules fejlene somregel. Bruger man derimod AJAX, bliver ens fejl, dårlige kodevaner, manglende kunnen og browserens uhensigtsmæssigheder pludselig _meget_ store faktorer.
Selvom det på overfladen ser let ud at kode AJAX, er det betydeligt vanskeligere end de fleste, der gør det, tror  =)

Den spidsfindige læser vil så måske mene: "Jamen, så er der jo ingen forskel på AJAX, HTML, DOM, JS og CSS".

Svaret må være: "Jo, for selvom de fleste, der (tror de) koder web, ikke aner, hvor svært det er at gøre ordentligt, så er AJAX faktisk betydelig vanskeligere"  ;o)

/mvh
</bole>
Avatar billede intenz Novice
16. juni 2007 - 14:11 #8
Havde lige glemt denne her. Syntes roenving og olebole skal have point. Så i må gerne lægge et svar.
Avatar billede roenving Novice
17. juni 2007 - 01:04 #9
Oki '-)
Avatar billede olebole Juniormester
18. juni 2007 - 10:31 #10
Gerne  =)
Avatar billede roenving Novice
19. juni 2007 - 15:24 #11
-- og tak for point ;~}
Avatar billede olebole Juniormester
20. juni 2007 - 11:20 #12
Tak for points  =)
Avatar billede mstitdk Novice
05. december 2009 - 01:16 #13
HEy intenz, har du læst svaret i min trånd ang. programør til PHP fusion...?
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

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