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?
Forum: SessionArray
11 svar · 202 visningar · startad av Lukaspojken
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
ä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>
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...?
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
varför inte?
man kan ju göra så här:
-
i application_onstart i global.asa kastar man in alla medlemmar i en application("members") på lämpligt sätt.
-
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>
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
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...:)
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>
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 --
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...
Det går aningens snabbare att läsa in i ett recordset, och man får de bekanta recordset-metoderna att jobba med.