webForumDet fria alternativet

Forum: SessionArray

11 svar · 202 visningar · startad av Lukaspojken

LukaspojkenMedlem sedan maj 20011 312 inlägg
#1

Jag tänkte om man skulle använda sig av array-funktion när jag hämtar in trädstrukturen från db:n och lägger denna array i en session. Så om man byter sida eller klickar på ett inlägg så behöver man inte göra om db-kopplingen...är det en bra lösning?

VideMedlem sedan dec. 19998 577 inlägg
#2

Nä, det tycker jag inte... att lägga in ett helt recordsets array i en session kommer att dra mycket minne, och när det då är många som besöker sajten så kommer inte servern att palla med särskilt mycket.

Kolla in denna artikel om sessioner: http://www.4guysfromrolla.com/webtech/faq/Advanced/faq4.shtml

Vad är det för fel på att hämta det varje gång sidan laddas? Du kommer knappast tjäna mycket i snabbhet...

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

@ndersMedlem sedan juni 200032 969 inlägg
#3

är det hyfsat statisk information kan man ju faktiskt fundera på att lägga det i en application-variabel.

inte så dumt faktiskt...

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LukaspojkenMedlem sedan maj 20011 312 inlägg
#4

det var inte alls dumt @nders...men är det verkligen så att det gör att det går lite snabbare...jag har tex en rullgardin med medlemmar...som i princip är statisk...skulle det vara bra att sätta den i application?

Vide, jag trodde session-variabeln var lika stor minnesmässigt som en vanlig variabel...?

VideMedlem sedan dec. 19998 577 inlägg
#5

Vide, jag trodde session-variabeln var lika stor minnesmässigt som en vanlig variabel...?

Nja, något större är den (information om användaren den är kopplad till finns ju med). Men iom att en variabel försvinner så fort sidan är klar och Sessionen stannar kvar (20 min default), så kommer server hosta ont.

Men visst är det statisk info så som är samma för alla så kan man precis som @ säger lägga det i en Application... frågan är om du tjänar något på det, vilket jag inte tror... Varken prestandamässigt (visst en liten marginell skillnad) eller tiden det tar extra att koda...

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

@ndersMedlem sedan juni 200032 969 inlägg
#6

varför inte?

man kan ju göra så här:

  1. i application_onstart i global.asa kastar man in alla medlemmar i en application("members") på lämpligt sätt.

  2. om en ny medlem registreras, så låser du bara application-objektet med .lock, lägger till medlemmen, låser upp med .unlock.

varför inte?

- - - -

Vide, jag trodde session-variabeln var lika stor minnesmässigt som en vanlig variabel...?

jo, men med skillnaden att vanliga variabler lever bråkdelen av en sekund då sidan exekveras. ponera att du har en session timeout som är 20 min(default). det innebär att varenda session du skapar ligger och tar samma minne som en vanlig variabel, men istället för att göra det i bråkdelen av en sekund, så gör den det i minst 20 minuter.

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

emissionMedlem sedan dec. 19996 721 inlägg
#7

Problemet är också att när man lagrar en fetingarray i Application eller Session så dupliceras denna i minnet, så fort ett skript använder arrayen. När man hämtar Session("MinArray")(8) så skapas en kopia av arrayen, och sedan hämtas värdet ur denna.

Jag skulle i stället rekommendera att du sparar ut recordsetet som en fil, så kan du återanvända det, utan kontakt med databasen.

på ena sidan:

objRS.Save server.mappath("threads.xml")

och på andra sidan:

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = adUseClient
objRS.Open server.mappath("threads.xml"), , adOpenKeyset, adLockBatchOptimistic, adCmdFile

LukaspojkenMedlem sedan maj 20011 312 inlägg
#8

Det är också smart med att spara till en fil...massor av godis...:) det är ganska långt till att jag börja leka med de bitarna men jag det är ändå intressant att fundera i vidareutvecklingsbanor...tack för er insikt...:)

@ndersMedlem sedan juni 200032 969 inlägg
#9

Problemet är också att när man lagrar en fetingarray i Application eller Session så dupliceras denna i minnet, så fort ett skript använder arrayen.

det var som attans! här lär man sig grejer! :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

SPiNMedlem sedan mars 20007 896 inlägg
#10

emission: Går det snabbare att använda ett recordset för att läsa av XML-filer, eller är DOM XML att föredra? Enligt ditt exempel borde väl ett recordset vara snabbare, men kanske ändå inte?

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

LukaspojkenMedlem sedan maj 20011 312 inlägg
#11

Jag tänkte på en annan sak med det med sessions...man kan ju bara tömma session när man använder och då kommer bort från problemet att det sparas i 20 minuter...

emissionMedlem sedan dec. 19996 721 inlägg
#12

Det går aningens snabbare att läsa in i ett recordset, och man får de bekanta recordset-metoderna att jobba med.

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