10. oktober 2002 - 12:53Der er
23 kommentarer og 1 løsning
Session variabler
4 User sessions pr bruger der logger sig ind i et system er det for mange?.
Kan godt reduceres til 2 men så kræver det flere kald til databasen.
Hvor mange sessions skal man bruge før det bliver kritisk for serveren. Det kommer selvfølgelig an på hvor meget ram serven har men er det fornuftigt at bruge 4 sessions pr bruger?.
Der er ikke noget, der hedder brugere i ASP. Hver session er unik for ASP, uanset om det er den samme person. Uden sessions ville serveren slet ikke vide, at det stadig var dig, hvis du gik videre til en anden side. Du kan komme til at bruge meget ram, hvis du trækker for meget å databasen
Det kommer også an på hvor mange data du smider i hver... Hvis det er brugeID, brugerNavn, mf så går det nok. Hvis det er 100M billeder så går det hurtigt galt. Men Session bliver gemt hos brugeren, lige som cookies, dog er de kun aktive når man er på den pågældene side.
Du kan reducere belastningen ved at give session en hurtigere timeout, så du ikke har alt for mange forladte sessions stående, for gør du ikke det, varer en session 20 minutter, selvom gæsten er skrevet med det samme
eagleeye: sessionvariabler bliver ikke gemt på klienten men på serveren. Der er kun en lille ID på klienten. Så ja: mange sessionvariabler belaster serveren - lidt :)
I HTML kan serveren ikke se, om det er samme bruger, der åbner en ny side. Sessions i ASP virker på den måde, at serveren tildeler brugeren en cookie, altså en lillebitte tekststump som id. Hver gang brugeren så åbner en ny side (eller vender tilbage til samme side), læser serveren cookien og ved på den måde, at en request hører til en bestemt session. Variablerne bliver liggende på serveren indtil den pågældende session er slut, og derefter slettes de af hukommelsen. Hvis der ikke kommer en request indeholdende den pågældende sessions id i løbet af default 20 minutter, så ophører den pågældende session.
Det giver kun mening at tale om at en bruger har 4 sessions, hvis brugeren opretter 4 sessions lige efter hinanden og opretter de næste, mens de andre stadig kører. Men det er da ikke specielt smart? Hvis du virkelig vil det, kan du slutte hver session med Session.abandon Det knalder den session ned, så der ikke er mere tilbage af den. Belastningen af serveren er nok mest afhængig af, om hver session har dannet nogle kæmpestore variabler med masser af databaseindhold. og ikke får dem frigjort hurtigt nok.
Ok. Det er ikke noget problem. Du taler vel om vi små bitte stumper tekst. Det var noget andet, hvis du hentede store mængder data fra en database. Jo, Session.abandon lukker Sessionvariablerne på den pågældende session. Og en session variabel kan ikke ses af en anden session.
Det er klogt at bruge en function, hvis du har en masse kode, du bruger flere gange og som returnerer et resultat. Hvis den ikke skal returnere noget, bruger du en sub.
Hvis jeg 2 gange på en side skal checke for om et blibliotek er tomt så ville du bruge en sub istedet for?.
Function slet_dir(dir_name) 'Hvis der ligger et billeder i f_temp bliver de slettet response.write "Åbner fso og sletter fra temp function<br><br>" Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.Getfolder("d:\home\clanwarsdk\www\opdatering\images\" & dir_name & "\") if folder.size > 0 then response.write "sletter fra temp<br><br>" for each file2 in folder.files fso.DeleteFile("d:\home\clanwarsdk\www\opdatering\images\F_temp\" & file2.name) next end if set fso = nothing response.write "lukker fso<br><br>" End function
Man behøver ikke bruge koden flere gange. Hvis en stump kode laver en veafgrænset, veldefineret funktion, kan man (bør man) give den et navn og anbringe den i en funktion/sub. Det øger læseligheden, gør det nemmere at vedligeholde, og måske genbruge et andet sted. Det kan også være det går lidt langsommere, men det er vel ligemeget...
Det koster (ganske) lidt at kalde en sub/function - så response tiden bliver teoretisk set langsommere hvis man kun har ét kald. Bruger man samme kode flere steder, kan det derimod typisk betale sig at samle det i en sub/function, da kodelinierne så kun skal parses en gang.
Men: få koden overskuelig og korrekt. Derefter kan man evt. bekymre sig om kørehastighed.
Det er utroligt vigtigt at man tager sig tid til at kode læseligt og dele tingene lidt op! Det betyder ikke noget for, hvordan det virker, men det gør det nemmere at rette og undgå fejl. Hvis det gør nogen forskel at bruge sub/funktion tidsmæssigt, er det meget, meget lidt. Det gør nok en hel del mere forskel, hvis du har for mange <% %>, for så skal serveren kalde ASP igen hvergang den går fra HTML til ASP
Når siden hedder .asp bliver den i hvertfald sendt til serverens ASP script vært, som tager sig af at fortolke den, så selve fortolkningen sker formentlig på een gang. Men hvis der kun er en blok med ASP, skal serveren kun hoppe ud og ind af HTML-koden een gang. Jeg skriver, hvor jeg har det fra, hvis jeg falder over det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.