webForumDet fria alternativet

Skonsamma db.kopplingar?

ASP

5 svar · 342 visningar · startad av Troll

Medlem sedan dec. 2003229 inlägg
Frågan#1

Vet inte vad jag ska söka efter så jag ställer frågan istället. På många communitys så byggs sidan med frames där en av dem uppdateras med X minuters intervall för att se om användaren har fått ett nytt svar i forumet eller liknande.

Men jag vill minnas att jag också har sett ganska stora sidor som bara kör med tex tables där samma info visas på varje sida hel tiden, det kan ju inte vara allt för skonsamt eftersom det måste göras anrop hit och dit varje gång användaren klickar på något eller funkar det på något annat vis?

Det måste ju slöa ner allt väldigt mycket?

Det slog mig nyss och blev en såndär sak som jag inte kan släppa :D

Medlem sedan okt. 20041 556 inlägg
#2

Ja,visst. Databasanslutningar slöar ner en webbsida det stämmer. Men alternativet är ju att ha sidan helt statisk, men då är det svårt att skapa ett community.

Men en databasanslutning tar ju inte så många millisikunder och har du inte 1000-tals användare så skall det fujunka smidigt ändå.

Det viktiga är:
Öppna databasen sent, och stäng den tidigt.
Använd inte onödigt många databaskopplingar.
Använd en för ändamålet lämplig DBMS.

Sedan så är det också viktigt att hushålla med sessions. De är bra på att slöa ner en sida.

Medlem sedan maj 20011 312 inlägg
#3

Några tips:
1. Skapa en "databashämtningsavdelning", dvs ett område på din sida där du gör precis alla de databashämtningar som du behöver göra i ett enda svep.

2. Är det flera rader du hämtar från databasen så tryck in datan i arrays. Se nedan på ett exemepel:

strSQL = "SELECT field1, field2 FROM tabell
Set RecSet = Connect.Execute(strSQL)

	IF NOT RecSet.EOF THEN arrRecords = RecSet.GetRows

RecSet.Close
Set RecSet = nothing
Connect.Close
Set Connect = nothing

IF ISArray(arrRecords) THEN
	FOR I=0 to UBound(arrRecords,2)

		field1 = arrRecords(0,I)
		field2 = arrRecords(1,I)

		Response.write field1 & " " & field2 & "<br>"

	Next
End if

4. Glöm inte att stänga ner din connection och onödiga recordset när de inte längre behövs.

5. Det finns en möjlighet att cacha tex oföränderlig data som behöver hämtas flera gånger till sidan. Du kan cacha detta i application-variabler. Typ:

IF NOT RecSet.EOF THEN Application("DagensKalenderhändelser") = RecSet.GetRows

6. Det finns olika sätt att connecta mot databasen. Försök hitta den connectionssträng som är optimal för din databas och som uppfyller dina behov.

Sen finns det massor av andra saker du kan göra för att få sidan att gå snabbare. Om du inte redan idag följer dessa punkter så kommer du med all säkerhet se märkbar skillnad när du väl implementerat dem. Lycka till! :)

Medlem sedan dec. 2003229 inlägg
#4

Lukaspojken:
Mjo, det med att trycka in allt i arrays har jag läst att det ska snabba på lite när det är mycket data som ska hämtas. Men nu blev jag lite fundersam, hur mycket data kan man lagra egentligen? Menar, om jag jag lagrar en titel i tex strTitel så är det ju inga probem men om jag sedan ska försöka fylla strBibeln med all text från Bibeln så får jag ju bara med några tecken, hur funkar det med arrays på den punkten? Kan man lagra större artiklar på ett par tusen tecken i en array?

Hur mycket kan man cacha i exempel nr 5 egentligen?

Jag håller iofs bara på att bygga ett litet forum nu, det är ju lätt hänt att man inte tänker på att göra allt rätt från början då utan gör lite fula lösningar men tänkte ändra på det och alltid utgå från att allt kommer att bli tokstort och göra det rätt från början :)

Medlem sedan juni 200032 967 inlägg
#5

Kan man lagra större artiklar på ett par tusen tecken i en array?

Ett par tusen tecken är ingenting.

Hur mycket kan man cacha i exempel nr 5 egentligen?

Hur mycket minne har webbservern? :)

Medlem sedan dec. 2003229 inlägg
#6

Ah ok, så det är inte samma som vanliga strängar alltså :D Har aldrig använt mig av den tekniken när jag ska hämta info men det lär jag börja med nu, låter ju onekligen mycket smartare plus att att man kan stänga ner snabbare, kanon!

Haha, det var lite dumt av mig att inte tänka på det :)

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)