webForumDet fria alternativet

Snabbare hemsida

ASPur ASP

34 svar · 951 visningar · startad av danielpetersson

Medlem sedan apr. 2002123 inlägg
Frågan#1

Hej!

Jag håller på med en hemsida som är kopplade till en databas. Bla ska jag presentera en meny som är kopplade till databasen samt en sökfunktion. Det är en ganska stor databas. Jag skulle vilja att hemsidan blir snabbare än vad den är nu. Är där någon som har förslag på förändringar för att göra hemsidan snabbare?

Tacksam för svar

Medlem sedan maj 200010 687 inlägg
#2

Om du söker på optimering i det här forumet så hittar du nog en del.

Men några tips från min sida. :)

  • Option Explicit längst upp i koden
  • Stäng object så fort du är klar med dem (öppna sent, stäng tidigt)
  • Försök hålla nere antalet databashämtningar, vill du hämta från en annan tabell i en loop så använd JOIN i SQL.
  • Kapsla in koden. COM-objekt är bäst, men klasser ska också vara bra.
  • Se till att använda rätt drivrutin om du kör med Access (Jet...).
  • Använd frånkopplade recordsets.
Medlem sedan mars 20007 896 inlägg
#3

Jag hade bara en liten synpunkt på följande:

# Kapsla in koden. COM-objekt är bäst, men klasser ska också vara bra.

COM-objekt kan användas för att göra sidan snabbare, eftersom att det då handlar om kompilerade klasser, metoder och funktioner. Men klasser i ASP gör inte sidan snabbare utan mer skalbar, vilken är en enorm fördel vid större system.

Medlem sedan apr. 2002123 inlägg
#4

Stängda Recordset?

Hur går det till?

Medlem sedan mars 2002777 inlägg
#5

Kika på metoderna getstring() och getrows() ;)

Medlem sedan mars 20007 896 inlägg
#6

Stängda Recordset?

Hur går det till?

DittRecordSet.Close
set DittRecordSet = Nothing

Sätter du även det stängda recordset:et till Nothing så rensar du upp lite i minnet, vilket också är bra. :)

Medlem sedan maj 200010 687 inlägg
#7

SPiN: Har inte använt klasser i ASP eftersom att det känns ganska kasst i jämförelse med COM. Därför har jag inte så mycket koll på det. ;)

danielpetersson: Inte stängda utan frånkopplade recordsets.
När man öppnar recordsettet så använder man adOpenStatic som cursortype och sen rs.ActiveConnection = Nothing.

Medlem sedan maj 200010 687 inlägg
#8

ADO stänger själv recordsettet (.Close) när man sätter det till Nothing. Så det enda man behöver skriva är set DittRecordSet = Nothing.

Medlem sedan feb. 20001 590 inlägg
#9

Försök optimera databasfrågan, använd också execute() metoden, så slipper du en massa reserveade resurser för recordset.

/T

Medlem sedan maj 200010 687 inlägg
#10

Men Toonster, då kan man ju inte ha frånkopplade recordsets...

Medlem sedan nov. 20017 144 inlägg
#11

Liten fråga:

Är det inte bra att lägga in recsetet i variabler och sedan stänga det med en gång.


öppna databas
skapa recset
sätta variabler ifrån kolumner
stänga recset
stänga databas
presentera recset med variablar

MVH Jesper

Medlem sedan maj 200010 687 inlägg
#12

Du kan stänga databaskopplingen direkt efter du har skapar recordsettet. :)

Medlem sedan nov. 20017 144 inlägg
#13

Du kan stänga databaskopplingen direkt efter du har skapar recordsettet.

Kan man?

Men om du har stängt databaskopplingen och försöker göra så här:

variabel=rs("något")

så får man väl ett felmeddelande????

MVH Jesper

Medlem sedan mars 20007 896 inlägg
#14

För att optimera bör man använda GetRows, och inte recordset:et.

set objRecordset = objConnection.Execute ( "SELECT blah FROM lah" )

arrGetRows = Null

If Not objRecordset.EOF Then
     arrGetRows = objRecordset.GetRows
End If

objRecordset.Close
set objRecordset = Nothing

' Gör vad du vill med dina värden som numer är lagrade
' i den två-dimensionella arrayen arrGetRows
Medlem sedan mars 2002777 inlägg
#15

Ser rätt omständigt ut:

sql ="SELECT fält1, fält2 FROM tabell ORDER BY fält1"

arrMyArray = connect.Execute(sql).GetRows()

connect.close()
set connect = nothing

if isarray(arrMyArray) then

'loopa ut den tvådimentionella arrayen

end if
Medlem sedan mars 20007 896 inlägg
#16

Men då missar man kontrollen om den är tom. Man måste kolla mot EOF har jag för mig för att få reda på om det returneras några rader.

Medlem sedan mars 2002777 inlägg
#17

Finns inget blir väl if isarray(arrMyArray) then false?

Medlem sedan mars 20007 896 inlägg
#18

Nope, inte vad jag har hört. Var så länge sedan jag pillade ASP, så jag är osäker - men jag har för mig att det inte gick så bra för mig. :)

Medlem sedan mars 2002777 inlägg
#19

Det är nog så spin, jag ger mig ;)

http://www.webforum.nu/showthread.php?s=&threadid=13306&highlight=isarray

Medlem sedan maj 200010 687 inlägg
#20

IsArray ska visst det funka... Men jag hänvisar till en tidigare tråd där jag argumenterat till varför man inte ska använda GetRows...
http://www.webforum.nu/showthread.php?s=&postid=331937#post331937

131 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)