Permalänk
Medlem

[www] sessioner vs kakor

Yo

Hatar de svenska benämningarna egentligen, men men.

(Det hela är lite färgat av php)

Det vore intressant att höra några resonemang angående kakor vs sessioner. Jag har bara använt sessioner hittils (ja, ingen behöver vara viktigpetter och säga att sessioner använder kakor, vi vet). Jag har däremot funderat på att gå över helt till kakor, främst för att testa hur jag trivs med det, men det har inte blivit av.

Jag ska fatta mig kort och genast definiera vad jag anser är för- och nackdelar med sessioner, och cookies har ju de omvända egenskaperna då, typ.

Bra med sessioner
+ Smidiga att administrera $_SESSION["minvariabel"] = 3;
+ Kräver lite bandbredd (väldigt lite som skickas från klienten till webbservern, pga att kakan bara innehåller ett id, typ)
+ De ligger på servern, klienten kan varken läsa eller editera
+ Obegränsad (mer eller mindre) storlek

Dåligt med sessioner
- Kostar en del minne hos servern
- Lite svårare att ha full kontroll över (hur länge de lever etc)

Mja, det blev kort och rätt spontant, men vad säger ni?

Permalänk

Tycker de inte riktigt kan jämnföras, sessioner och cookies har olika användningsområden i min åsikt.

=edit=

lägger till lite mer om vad jag menar med detta när jag inte är så trött.

Visa signatur

Asus Maximus II formula, E8400 @ 3.9GHz, 4GB Dominator DDR2, Radeon HD4850.

Permalänk
Medlem

Med sessionshanteringen är ju att du kan sätta data som du inte vill att användaren ska kunna manipulera. Att manipulera data i cookies är ju en barnlek vilket i slutändan ändå betyder att du på nått sätt måste spara data på servern för att "macha".
Men det är klart. Du kan ju kryptera cookiedatan. Men då går det åt lite extra CPU-kraft + att du måste ha nån slags nyckelhantering.

Permalänk
Medlem

Men hur ska du säkerställa att användaren inte förändrar datan i en cookie, vilket är något svårare i en session.

Permalänk
Medlem

okej, jag hade för bråttom, jag lägger till säkerhet och storlek... jag hade folk som väntade på mig när jag skrev det där, så jag fick tokskriva

Kom ihåg att allt i cookies inte är hemligt.

Jag sparar just nu rätt många saker i en session för varje användare på wintown, allt som visas i medlemskolumnen och på välkomstsidan - nästan. Detta är helt enkelt för att denna informationen presenteras vid varje sidladdning ( i medlemskolumnen då).

Såå, lösningen som behövdes var ju såklart "ingen jäkla databasinstruktion för detta varje sidladdning" så det blev helt enkelt att spara allt i en session. Jag vet inte vilka andra potenta lösningar som finns faktiskt, cookie, sure, men det är mycket skrot som ska skickas till servern varje gång. Spara det i en cachefil (typ txt) sure - men varför inte fortsätta använda sessionen istället? Det kanske finns fler smarta lösningar, informationen är i alla fall inte på något sätt hemlig, och om någon vill editera så får dom väl det, det är bara på deras skärm det blir annorlunda.

Men men, frågan är inte specifikt ställt till detta, men jag använder sessioner i massor just nu, det är bekvämt, men jag vet inte hur smart det är egentligen.

edit: Inte för att det intresserar mig nämnvärt, men för att se till att folk inte gör om en cookie borde väl inte vara något klurigt. Räcker det inte bra med att md5a datan och spara på servern, om inte detta stämmer - generera om cookien / kasta ut användaren.

Permalänk
Medlem

Som tidigare är nämnt kan man inte direkt jämföra dessa två.
Det bästa sättet att använda de är antagligen en kombination? Har för mig att phpBB gör på det sättet. Sparar sessionsid i kakan och när personen kommer tillbaka skapas en session utifrån information som ligger sparad i en tabell i databasen med det sessionsid:t.
Så, testa en kombination?

Permalänk
Medlem

klart att de båda har sina individuella syften, men i det stora hela är gör de båda ungefär samma sak - de sparar data temporärt för en specifik användare. Det finns massor av situationer där valet mellan kakor och sessioner är ganska svårt - därmed är de klart jämförbara.

Jag menade absolut inte (det var kanske dåligt beskrivet) att den ena metoden skulle höjas till skyarna och den andra skulle sågas i småbitar, utan menade att diskutera för- och nackdelar med respektive teknik för att på ett överskådligt sätt få en aning om vilken som är det bästa valet vid en godtycklig situation.

Men nu har jag kommit på att jag ska cacha mer data i textfiler, det ska jag nog testa. Eftersom variablerna sällan behöver separeras, utan de ska visas i ett visst sammanhang så kan jag cacha iväg stora massor till en textfil. Wintown använder redan den metoden över typ hela siten, men det går nog att ta det några steg längre. Hmm hmm... Prestandamässigt blir det kanske lite segare då sessionerna så vitt jag vet ligger i ramminnet och inte på disk... Eller så har jag fel. Djävla klurig site jag har alltså, hur jag än gör så får jag inte till allt helt klockrent. Väldigt mycket är väldigt bra, men det är några saker jag inte blir bekväm med. Aja, det är ett för stort ämne för denna tråd.

Permalänk
Medlem

Sessioner ligger antingen på disk (vanligtvis under /tmp på *NIX-system) eller i databas om han har valt det så.
Om du ska skapa enskilda cachefiler med data för användarna så uppfinner du helt enkelt hjulet igen för det är ju faktiskt PRECIS det sessionsfilerna är.
Vill du ha ramcache med nycklar så råder jag dig att titta på memcached som är en TCP-server som håller en nyckel/data-databas i minnet och är lätt att använda.

Permalänk
Medlem

nej, jag skulle inte casha på samma sätt som sessioner, utan jag cachar stora block med färdigformaterad data. För just det användningsområdet jag har i åtanke så kommer sidan att genereras snabbare pga detta, då det är rätt mycket info i det blocket, samt en del annat, typ if(file_exists($avatar)) typ, bland annat, då dumpar jag ned hela skiten i en textfil. Det finns massor av fördelar. Jag som admin kan uppdatera folks cachefiler (ja, efterfrågan finns för det redan) - men det är betydligt klurigare att uppdatera en användares session.

Jag är rätt säker på att idén är bra, jag ska göra en mätning sen och se om genereringstiden blir snabbare.

Fast sen är det ju svårare om samma information ska användas på fler ställen, alltså i andra sammanhang, det finns två sidor där vi presenterar ungefär samma information... Kanske blir två cachefiler... Aja, det får jag fundera på, jag har inte tid att koda på wintown än på ett gäng dagar, jag får en del betänketid.

Jag tittade lite snabbt på memcached förut, har du erfarenhet av detta? Är det en bra metod?