![]() |
User dataset i session eller cookie?
Tjena!
Tänkte höra lite med er hur ni gör. Säg att man har en sida där man måste blir medlem för att utföra något. Skulle ni spara datasetet i en session eller i en cookie? Varje användare har ca 20 parametrar med information. |
Spara det i databas med sessionid, ip, user agent och senaste aktivitet
|
så du vill alltså göra en db-anrop varje gång? måste nämligen ha tillgång till "användaren" för varje sida
|
Användarobjekt i session. Det är först när användaren skall göra något (uppdatera) så kollar du i db.
|
Använda databas främst för att validera att cookien inte är gammal(som går att manipulera på klientsidan). Bryr du dig inte om det så kan du köra på allt i cookien.
|
Citat:
eftersom session tar utrymme på servern, och säg att man har 50 samtidiga användare med ca 20 parametrar per användare vilket blir 50*20=1000 celler med data. |
Vill du ha någon form av säkerhet måste du kolla inloggning mot servern. Vill du kunna hantera och spara datan från ett besök till nästa på ett pålitligt sätt måste du spara den på servern.
|
Citat:
|
Citat:
|
Citat:
funkar det även där? |
Vad är de för data som ska sparas ner? Användarrelaterad data sparas normalt i en databas och referensen till raden i en cookie/session. Vad händer annars när någon startar om servern och alla sessions försvinner med tillhörande data?
|
Citat:
startas servern om, så blir alla utloggade, så måste alla logga in igen på nytt för att erhålla nya sessioner. Men om jag nu gör som du säger, dvs skapar en referenskolumn med en cookie som refererar till användarkolumnen i databasen. då gissar jag att den ska se ut på detta vis: Kod:
dbo.CookieSession typ "inloggad som Johan Åselius" högst upp på sidan. och det är även sessionen som håller koll på fall användaren är inloggad eller inte. |
Citat:
Kod:
# Sätter en cookie |
Citat:
att lagra användarId:et i en cookie (krypterat). Men det kommer fortfarande leda till en massa sql anrop... dvs en anrop för varje gång sidan laddas. frågan är då vilket som är bäst: 1. att lagra hela "user" i en dataset som en session 2. att lagra hela "user" i en dataset som en cookie 3. att lagra referens i en cookie som gör en db-anrop för att få fram användare för varje sidan. |
Citat:
Att läsa från databasen vid varje anrop kommer att ha minimal inverkan på din applikation. Vi pratar om 5 ms< / query. Helt onödig optimering. De du pratar om är att spara ner information om användaren på två ställen, vilket kommer skapa en hel del problem och förmodligen resultera i en del buggar. Spara allt på ett stället (i databasen) och hämta informationen när du behöver den. |
Citat:
Jag brukar lagra användaraid, namn och tid för senaste aktivitet i sessionen och hämta från databasen vid varje sidladdning. Det ska till hiskeligt många samtidiga användare för att svartiderna ska bli ett problem. |
Alla tider är GMT +2. Klockan är nu 01:50. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson