Avatar billede s0mmer Nybegynder
29. juni 2009 - 15:35 Der er 7 kommentarer og
1 løsning

Loade side og så image

Hej eksperter,

Jeg har en side som regner en masse data ud hvorefter der bliver benyttet google chart til at lave en graf.

Dog irriterer det mig at hver gang man vil ind på den side skal man sidde på den foregående side indtil alt er regnet ud og grafen er blevet lavet.

Kan i komme på en fiks måde at loade siden hvorefter beregninger bliver lavet og så billedet bliver vist?

På forhånd tak
Avatar billede thesurfer Nybegynder
29. juni 2009 - 18:30 #1
Først: Hust at "ASP" og "ASP.NET" er to forskellige ting, og at du nu er i "ASP" kategorien, og ikke "ASP.NET".. :-)

Hvis der skal være en "forsinkelse", hvilket er det du vil have, skal du nok bruge JavaScript til at lave billede/chart kaldet.

Eksempel:

Start med at smide chart-koden i en separat fil, f.eks. chart.asp.

Der efter placerer du billede, som place holder, f.eks.:

<img id="mychart" src="blank.gif" width="500" height="300">

hvilket betyder,

- at den skal loade en fil der hedder blank.gif, hvilket du selv skal oprette. filen kan bare være 1x1 pixel gennemsigtigt/transperant billede

- at billedet bliver 500 pixels i bredde, og 300 pixels i højden.. det skal du selv rette til, så det passer med størrelsen på charten.

Så kan du bruge noget JavaScript, f.eks:

<script type="text/javascript">
window.onload = function()
{

url = "chart.asp?dine=data"

document.getElementById("mychart").setAttribute("src", url);

}
</script>


På den måde bliver charten først genereret, når siden er loadet færdigt.
Avatar billede s0mmer Nybegynder
29. juni 2009 - 18:38 #2
thesurfer > Men, det er højst sandsynligt selve udregningen der gør at siden loader langsomt. Dette vil ikke ændre sig med denne kode? Eller misforstår jeg noget?
Avatar billede thesurfer Nybegynder
29. juni 2009 - 20:48 #3
Forstil dig følgende:


Du har 2 opgaver, som du skal udføre.

Opgave A ("chart") tager 2 minutter at udføre, og opgave B ("html", selve siden) tager 10 sekunder at udføre.


*** Som det er nu:
Som du har det nu, bliver opgave A udført først, og derefter opgave B.

Dvs, lige nu skal man vente 2 minutter og 10 sekunder, før man overhovedet får noget at se.

Det gider folk nok ikke.. med mindre at de er hardcore-fans af hvad end det er du tilbyder.


*** Med den nye kode:
Ved at udføre opgave B først, og derefter opgave A, skal man kun vente 10 sekunder, før man får noget at se.

Så har man noget man kan se/læse, og i mellemtiden bliver din chart genereret.



Det tager selvfølige stadigvæk 2 minutter og 10 sekunder at udføre opgave B + opgave A, men du har allerede fået du kan arbejde med (opgave B / html).


Med andre ord: Det er det psykologiske man spiller på.


Hvis charten er vigtigere end alt andet, og websiden overhovedet ikke kan bruges til noget uden charten, så er du lidt på røven.. :-)

Så skal du have fundet ud af, hvorfor det tager lang tid at generere charten, og hvad du kan gøre for at reducere tiden.
Avatar billede s0mmer Nybegynder
01. juli 2009 - 11:41 #4
thesurfer > Vi går lidt forbi hinanden..

Lige nu på sitet:

Først udregnes en masse tal vha. af asp.

Disse tal bliver så encodet via et javascript (for at gøre url'en mindre) Som så bliver sat ind som src fra google til billedet.

Og denne javascript bliver kaldt via body onload.


Problemet: Den lange udregning i toppen.


Det er ikke muligt at gøre det på din måde da hvis jeg smider det i toppen i en separat fil, har jeg jo ingen andelse om hvilken url der bliver genereret, for ikke at snakke om rækkefølgen med mit eksisterende javascript.
Avatar billede s0mmer Nybegynder
01. juli 2009 - 11:42 #5
anelse*
Avatar billede s0mmer Nybegynder
01. juli 2009 - 13:53 #6
Jeg fandt min egen løsning..

Jeg benytter en iframe som indeholder en "loading" side. Dernæst bruger jeg body onload og ændrer src. På den måde ser man loading siden i iframen indtil grafen kommer frem.

Det var lidt henad hvad du sagde thesurfer, dog kunne jeg ikke bruge dit forslag i mit tilfælde (men hvordan ku du vide det) så lad os dele points.. Smid et svar og ellers tak for hjælpen.
Avatar billede thesurfer Nybegynder
01. juli 2009 - 13:57 #7
Jeg tror at jeg bliver nødt til at se noget kode.. umiddelbart ser det ud som om at løsningen er, at flytte din ASP-kode ned i bunden af filen, og evt bruge Response.Buffer = True i kombination med en Response.Flush eller måske bare Response.Buffer = False..

Hvis du har mulighed for det, vis mig koden..
Avatar billede thesurfer Nybegynder
01. juli 2009 - 14:15 #8
Jeg springer over.. du snupper bare pointsne.. :-)
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
Kurser inden for grundlæggende programmering

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