Avatar billede hulla Novice
07. september 2009 - 15:52 Der er 12 kommentarer og
1 løsning

Rendere HTML hurtigt

Hej

Jeg står overfor en opgave med at få en enorm lang liste renderet hurtigt (også i IE :-)).
Det er ikke en mulighed at reducere listen, eller benytte paging.

Jeg kunne godt tænke mig at give brugeren en oplevelse af at der sker noget løbende, så han ikke skal vente til hele siden er renderet med at se noget.

Muligheder jeg selv ser:
1. Bruge AJAX til at rendere en lille del ad gangen.
2. Lade browseren gøre det løbende.
(det er denne mulighed jeg ikke er klar over hvordan man får implementeret)

Alle gode råd er meget velkomne
Avatar billede olebole Juniormester
07. september 2009 - 20:44 #1
<ole>

Hvis det er noget søgemaskinerelevant indhold, kan du ikke bruge Ajax

/mvh
</bole>
Avatar billede hulla Novice
07. september 2009 - 20:56 #2
Der er slet ikke adgang for søgemaskiner, så det er ligegyldigt.
Det jeg egentlig håbede på var en "best practice" for at få renderet  meget html. Når du ser en webside loade, vil der være elementer der kommer med det samme og nogle ting du venter på.
Hvordan styrer jeg det?
Hvad er grunden til at noget præsenteres med det samme?
Avatar billede olebole Juniormester
08. september 2009 - 00:42 #3
Hvilke elementer udskriver du i?
Avatar billede hulla Novice
08. september 2009 - 08:46 #4
Det jeg har overtaget er en tabel, som jeg påtænker at omskrive til noget med <div>.
Avatar billede olebole Juniormester
08. september 2009 - 15:52 #5
Hvis det er en liste, er det formodentligt noget, der skal stå i kollonner - og så er det nok ikke så smart med div(?)

Er det ren HTML, eller bliver data skrevet ud med serverscripting?
Avatar billede hulla Novice
09. september 2009 - 08:10 #6
Det er ren HTML, og jeg er også lidt bange for div'er til kolonne udskrivning.
Jeg er ved at kigge lidt på javascript til indlæsning af størstedelen.
Altså lade brugeren få skærmen fyldt med et samme, og så noget javascript der i onload() fylder resten af rækkerne på.

Kan det ikke lade sig gøre tror du?
Avatar billede hulla Novice
09. september 2009 - 08:11 #7
ja altså det er jo naturligvis fra en database, og HTML'en genereres via en repeater i dag.
Avatar billede softspot Forsker
10. september 2009 - 08:55 #8
Umiddelbart ville jeg forsøge med en tom tabel, der hentede en passende klump fra serveren og så fyldte tabellen om (f.eks. vha. jQuery eller lign. bibliotek). Disse klumper skulle så bare hentes sålænge serveren kunne levere flere. Du kan sende data i JSON og behandle dem på klienten.
Avatar billede softspot Forsker
10. september 2009 - 08:58 #9
Øøh - lidt uklart hvad jeg egentlig mente der... :-/

Trinvis forklaring:

1. render siden med en tom tabel (evt. med headers genereret fra starten)

2. hent den første klump data fra serveren

3. opret de relevante rækker i tabellen

3a. igangsæt evt. samtidig hentning af næste klump fra serveren

4. gentag trin 2 - 3a indtil der ikke er flere data
Avatar billede olebole Juniormester
10. september 2009 - 09:20 #10
Jeg ville nok først forsøge at forsyne tabellen med flere/mange tbody elementer - og nok også forsøge med et tfoot element, anbragt i toppen af tabellen. Mon ikke det kan 'snyde' IE?
Avatar billede hulla Novice
23. november 2009 - 10:34 #11
Softspot vil du sende et svar?

Vi endte med at opbygge tabellen med javascript, efter en række arrays var blevet sendt til browseren.
Dvs. ingen partiel rendering, men ideen, har vi fået lov at bruge tid på senere, så jeg vil gerne give dig pointene.
Avatar billede softspot Forsker
23. november 2009 - 11:03 #12
Vær så artig :-)
Avatar billede softspot Forsker
24. november 2009 - 14:15 #13
Tak for point :-)
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