/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problem med hastighed...
Fra : Magnus


Dato : 03-11-05 14:23

Flere og flere siger min ASP side er meget langsom. Der er sådan at når man
klikker på et link til siden så går der 3-5 sekunder (for mig med en 2mbit
linie) og nogle gange mere før siden vises.
Det er ikke som på en langsom forbindelse hvor siden læses og vises løbende
som den hentes for efter de 3-5 sekunder så vises det hele på en gang.

Hvad kan det være?

Fx. så har jeg ikke defineret de variabler jeg benytter da det var mit
indtryk at det var så lille en gevinst men måske skulle jeg gøre det?
Jeg benytter en MySQL database til diverse opslag flere gange på siderne kan
det have noget at sige at der er formange poster i en af tabellerne?


Er der nogen der har gode ideer til hvor problemmet ligger?


/Magnus



 
 
Jens Gyldenkærne Cla~ (03-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-11-05 19:48

Magnus skrev:

> Flere og flere siger min ASP side er meget langsom.

Et par forskellige ting du kan tjekke:

- Bruger du databaseforbindelser med omtanke?
Du skal huske at lukke og slukke en forbindelse når du er færdig
med at bruge den, og være varsom med at have alt for mange kald til
databasen på samme side (prøv at få flere oplysninger med i en
enkelt kald).

- Bruger du databasen fornuftigt?
Først og fremmest er det vigtigt at bruge databasen til det den er
god til - hvis man skal søge, skal man for guds skyld ikke skrive:

   ' DÅRLIG KODE!
   strSQL = "SELECT * FROM mintabel"
   set rs = conn.Execute (strSQL)
   fundet = False
   Do While Not rs.EOF
       If rs("brugernavn") = user AND rs("password") = pwd Then
           fundet = True
       End If
       rs.Movenext
   Loop

Vær sikker på at en løkke ikke kan gå i selvsving (uendelig løkke).
Undgå at hente data du ikke har brug for (hvis du skal bruge to ud
af ti felter i en tabel, så specificer felterne i SELECT-sætningen
og lad være med at bruge SELECT *)


> Fx. så har jeg ikke defineret de variabler jeg benytter da det
> var mit indtryk at det var så lille en gevinst men måske
> skulle jeg gøre det?

Det gør nok ikke det store i forhold til hastigheden - men hvis du
tillader brug af ikke-erklærede variable, kan det skjule nogle
grimme fejl. Overvej at bruge Option Explicit, og se om det
afslører noget (jf <http://asp-faq.dk/article/?id=9>)

> Jeg benytter en MySQL database til diverse opslag flere gange
> på siderne kan det have noget at sige at der er formange
> poster i en af tabellerne?

Hvor mange poster er der?
Hvilken slags data har du i tabellen.
Hvordan er den indekseret?

Det er svært at give konkrete svar uden at have flere oplysninger.
Læg evt. kildekoden til asp-siden op som en tekstfil så man kan se
den online. NB: Husk at fjerne/anonymisere evt. adgangskoder i
filen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Peter Rosenkvis~ (03-11-2005)
Kommentar
Fra : Jens Peter Rosenkvis~


Dato : 03-11-05 22:08

Jens Gyldenkærne Clausen wrote:
> Magnus skrev:
>
>>Fx. så har jeg ikke defineret de variabler jeg benytter da det
>>var mit indtryk at det var så lille en gevinst men måske
>>skulle jeg gøre det?
>
> Det gør nok ikke det store i forhold til hastigheden - men hvis du
> tillader brug af ikke-erklærede variable, kan det skjule nogle
> grimme fejl. Overvej at bruge Option Explicit, og se om det
> afslører noget (jf <http://asp-faq.dk/article/?id=9>)

Det er ikke noget jeg selv har efterprøvet, men jeg læste en gang i en
ASP bog, at det skulle gøre siderne 5-30% hurtigere ved at erklære
variablerne.
Hvilket må siges at være en mærkbar forskel.

--
Why do fireflies die so soon?
http://www.jensercube.dk/sig.asp

Jens Gyldenkærne Cla~ (03-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-11-05 23:29

Jens Peter Rosenkvist skrev:

> Det er ikke noget jeg selv har efterprøvet, men jeg læste en
> gang i en ASP bog, at det skulle gøre siderne 5-30% hurtigere
> ved at erklære variablerne.

Der er et stort spring fra 5 til 30 procent. Jeg har svært ved at
forestille mig at man kan hente 30 procents forbedring i hastighed
alene ved at erklære variable - men jeg skal ikke afvise at det er
muligt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Magnus (04-11-2005)
Kommentar
Fra : Magnus


Dato : 04-11-05 14:58

> Det er svært at give konkrete svar uden at have flere oplysninger.
> Læg evt. kildekoden til asp-siden op som en tekstfil så man kan se
> den online. NB: Husk at fjerne/anonymisere evt. adgangskoder i
> filen.


Jeg starter med at incuderet en fil med lidt html og oprettelse en
forbindelse til MySQL med disse to linier:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("DB")

Derefter har jeg på forsiden 7-8 database kald af denne type som henter de
nyeste poster fra forskellige tabeller i MySQL og de kan vel ikke optimeres
meget mere.

SQL="SELECT * FROM Nyheder ORDER BY dato DESC LIMIT 0, 5"
Set RS = conn.execute(SQL)

DO WHILE NOT RS.EOF
Response.Write ":: " & RS("overskrift") & "?<br>" & Chr(10)
RS.MoveNext
LOOP

De henter lige fra 1-10 poster. Kunne det være en ide at minimere antallet
af disse db kald ved på admin siden at når man gemme en rettelse i fx. en
nyhed så fortager den ovennævnte db kald og skriver html-koderne i en
seperat fil som jeg så inkludere på forsiden. Derved spare jeg et db kald.
Kunne det være en ide?


Her ender jeg med endnu en lille stump html i en inkluderet fil til at
afslutte siden.

Tilsidst har jeg en hjemmelavet countet som indskriver alle url på de sider
som besøges i databasen hvis de er der allerede så forøger den blot hits med
+1.

Som det sidste så slutter jeg af med at lukke forbindelsen med:
Conn.Close
Set Conn = Nothing

Kan jeg gøre noget for at forøge hastigheden på mine sider?

/Magnus



Benny Nissen (04-11-2005)
Kommentar
Fra : Benny Nissen


Dato : 04-11-05 15:03

Magnus wrote:

> SQL="SELECT * FROM Nyheder ORDER BY dato DESC LIMIT 0, 5"
> Set RS = conn.execute(SQL)

Har du *mange* flere felter end overskrift i tabellen ?
Select * henter jo alle felter, men du bruger kun overskriften.
Den kan gøres lidt pænere med "SELECT overskrift FROM ......."


--
Benny Nissen

Magnus (04-11-2005)
Kommentar
Fra : Magnus


Dato : 04-11-05 19:48

> Har du *mange* flere felter end overskrift i tabellen ?
> Select * henter jo alle felter, men du bruger kun overskriften.
> Den kan gøres lidt pænere med "SELECT overskrift FROM ......."

Der er vel 6-7 stk. hvoraf jeg kun bruger 3 så der kunne jeg nok spare lidt.

/Magnus



Jens Gyldenkærne Cla~ (04-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-11-05 22:29

Magnus skrev:

> Derefter har jeg på forsiden 7-8 database kald af denne type
> som henter de nyeste poster fra forskellige tabeller i MySQL
> og de kan vel ikke optimeres meget mere.

Er dato-feltet indekseret? Ved sortering kan en indeksering gøre et
sql-kald mange gange hurtigere.


> De henter lige fra 1-10 poster. Kunne det være en ide at
> minimere antallet af disse db kald ved på admin siden at når
> man gemme en rettelse i fx. en nyhed så fortager den
> ovennævnte db kald og skriver html-koderne i en seperat fil

Det kunne være en mulighed. Jeg ville starte med at lave nogle
målinger på de forskellige dele af siden. Gem fx tiden (Now)
forskellige steder på siden, og udskriv forskellene så du kan se
hvor lang tid de enkelte sidedele tager (du kan også bare udskrive
Now "råt" og så selv regne tidsforskellene ud).


> Tilsidst har jeg en hjemmelavet countet som indskriver alle
> url på de sider som besøges i databasen hvis de er der
> allerede så forøger den blot hits med +1.

Hvordan ser den ud?

Har du prøvet at koble den fra (hvis ja, ændrer det markant ved
loadtiden eller kun marginalt)?

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Magnus (04-11-2005)
Kommentar
Fra : Magnus


Dato : 04-11-05 22:38

> Er dato-feltet indekseret? Ved sortering kan en indeksering gøre et
> sql-kald mange gange hurtigere.

Hvad vil det sige at "indeksere" datofeltet?

> Det kunne være en mulighed. Jeg ville starte med at lave nogle
> målinger på de forskellige dele af siden. Gem fx tiden (Now)
> forskellige steder på siden, og udskriv forskellene så du kan se
> hvor lang tid de enkelte sidedele tager (du kan også bare udskrive
> Now "råt" og så selv regne tidsforskellene ud).

Er det måden man kan se hvilke dele af ens koder som tager længst tid at
afvikle?


/Magnus



Christian M. Nielsen (05-11-2005)
Kommentar
Fra : Christian M. Nielsen


Dato : 05-11-05 17:46


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9704E4C063FF2jcdmfdk@gyrosmod.cybercity.dk...

>
> Er dato-feltet indekseret? Ved sortering kan en indeksering gøre et
> sql-kald mange gange hurtigere.


Hvad menes der præcist med "indekseret" ? (I forhold til en accessdatabase
hvis det har betydning?)

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Christian M. Nielsen (05-11-2005)
Kommentar
Fra : Christian M. Nielsen


Dato : 05-11-05 17:48


"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:436ce1d0$0$78282$157c6196@dreader1.cybercity.dk...

>
> Hvad menes der præcist med "indekseret" ? (I forhold til en accessdatabase
> hvis det har betydning?)
>


Hummm, havde jeg blot læst næste svar kunne jeg have sparet 2 indlæg.

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Jens Gyldenkærne Cla~ (04-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-11-05 23:28

Magnus skrev:

> Hvad vil det sige at "indeksere" datofeltet?

Et indeks er en central størrelse i databasesammenhæng. Indekset
sammenkobler værdierne fra et felt og de poster værdierne hører til
i en ordnet rækkefølge. Det svarer ganske godt til et indeks i en
bog - hvor man hurtigt kan finde sidenummeret (eller -numrene) på
den side der handler om et bestemt emne.

Jeg ved ikke hvordan man anvender indeks i MySQL - men det er
givetvis beskrevet i manualen. Alternativt kan du spørge i
dk.edb.database, hvor der er flere garvede MySQL-brugere.


> Er det måden man kan se hvilke dele af ens koder som tager
> længst tid at afvikle?

Det er i hvert fald én måde. Jeg kender ikke andre.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Magnus (04-11-2005)
Kommentar
Fra : Magnus


Dato : 04-11-05 23:54

> Er det måden man kan se hvilke dele af ens koder som tager
>> længst tid at afvikle?

Jeg har nu gennemgået alle mine db kald og defineret de felter jeg bruger
istedet for at benytte "SELECT *" og det har forbedret hastigheden markant
således at hele forsiden indlæses på ca. 600 millisekunder.

Lyder det som en forniftig tid ?


/Magnus



Casper Bang (05-11-2005)
Kommentar
Fra : Casper Bang


Dato : 05-11-05 10:19

> Jeg har nu gennemgået alle mine db kald og defineret de felter jeg bruger
> istedet for at benytte "SELECT *" og det har forbedret hastigheden markant
> således at hele forsiden indlæses på ca. 600 millisekunder.
>
> Lyder det som en forniftig tid ?

Det lyder ikke imponerende... men det er svært at sige hvordan din side er
opbygget.



Magnus (05-11-2005)
Kommentar
Fra : Magnus


Dato : 05-11-05 11:53

>> Lyder det som en forniftig tid ?
>
> Det lyder ikke imponerende... men det er svært at sige hvordan din side er
> opbygget.
Hvad vil være en fornuftig afviklingstid?

Du kan se siden på: http://www.bif-support-frsund.dk men det er kun forsiden
jeg har optimeret indtil videre.


/Magnus




Casper Bang (05-11-2005)
Kommentar
Fra : Casper Bang


Dato : 05-11-05 15:49

> Hvad vil være en fornuftig afviklingstid?

Nu ved jeg ikke hvor mange besøgende du forventer - men knap to
sidevisninger i sekundet max er ikke imponerende synes jeg.
Men på den anden side - hvis du ikke forventer flere besøgende end det, er
det jo fint nok...

> Du kan se siden på: http://www.bif-support-frsund.dk men det er kun
> forsiden jeg har optimeret indtil videre.

Det er ikke til at sige hvor meget af tiden der bruges på transport fra
serveren, og hvor meget tid der bruges på at behandle siden på serveren.



Casper Bang (05-11-2005)
Kommentar
Fra : Casper Bang


Dato : 05-11-05 10:22

> Jeg ved ikke hvordan man anvender indeks i MySQL - men det er
> givetvis beskrevet i manualen. Alternativt kan du spørge i
> dk.edb.database, hvor der er flere garvede MySQL-brugere.

Jeg søgte lidt på google - du burde kunne bruge:
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
altså for eksempel:
CREATE INDEX MitNyeIndexsNavn ON MinTabel (DatofeltetDerSorteresEfter)



Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408799
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste