WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Allt om cookies (https://www.wn.se/forum/showthread.php?t=19743)

totoo 2007-03-04 02:10

Hallå...

Jag har aldrig vart en stor användare av cookies då jag enbart har använt mig av sessioner. Så enda kakorna jag har skapat har vart typ för att komma ihåg inloggning samt sessionskakan då.

Jag ska göra om mitt sessionssystem nu så att det använder sig av databasen istället för phps vanliga modell och av detta skäl så ska jag också försöka minska ner sessioninnehållet lite för databasens skull och ska lägga lite mer info i kakor istället tänkte jag. Ni får gärna skrika till om ni har något att säga kring detta ämne också.

Det är inte så att jag inte vet hur man skriver till och läser från cookies, utan jag vill veta mer på djupet. Exakt hur många bytes stora får de vara, fördelar och nackdelar mot att dela upp i flera cookies jämfört med att ha allt i samma, cachemöjligheter och hur ofta cookies överförs och mja, allt som är relevant helt enkelt.

Cookie hardcore-referens vore fint. Eller så kan ni kakmonster skylta lite med era skills.

Tack!

totoo 2007-03-06 06:04

Ingen? Kan någon kanske svara på hur det optimeras så att inte hela kakan överförs vid varje sidladdning? För kakan skickas väl bara över till servern då det behvös vad jag har förstått? Servern har väl sin interna cookiekatalog på något sätt antar jag där besökarens cookie landar och cachas på något sätt?

Lundmark 2007-03-06 07:15

Den överförs ju när man anropar den...... om man sedan inte vill hämta den på sidan två så får man ju själv lägga infon i en session. - så gör jag, och det går så bra så :)

Citat:

minska ner sessioninnehållet lite för databasens skull
Jag är inte riktigt med dig där, vad menar du att dom saboterar för varandra?

En cookie har en begränsad storlek på 4kb

totoo 2007-03-06 12:58

Fungerar det på så vis att om jag i min phpkod inte använder kakan, alltså varken get eller set så överförs den aldrig? Om jag sedan läser från den, alltså endast get på varje sida så överförs den i varje sidladdning trots att den inte behövs?

Jag trodde systemet var smartare än så.


Det jag menade med att göra sessionsinnehållet mindre var att det KANSKE kan vara smartare att ta bort viss info från sessionerna och lägga dem i kakor istället. Databasen blir mindre, och grejer som det inte är så noga med kan då hellre liga i kakor istället.

T.ex. vill jag undvika att göra sessionsanrop i varje sidladdning bara för att slipa lite databasanrop. Därför kan småsaker som normalt skulle använda en session få klara sig på att bara leka lite i en cookie.

Tror ni inte det kan vara en optimering? Att minska antalet databas-selects med 1 per sidladdning är mycket värt, förhoppningsvis slöar inte en cookie ner det så mycket att det blir likgiltigt.

Eller vad säger ni?

Sigurd 2007-03-06 13:13

i en vanlig kaka lagras all information i kakan (hos klienten) medans en sessionskaka endast lagrar sessionid hos klienten och all information hos webbservern.

totoo 2007-03-06 13:31

jojo, jag vet hur den delen fungerar. :) Tack ändå. :)

iXam 2007-03-07 00:58

Cookies förs över vid varje HTTP-anrop oavsett om du behöver den eller inte.

totoo 2007-03-07 04:45

Citat:

Originally posted by iXam@Mar 7 2007, 01:58
Cookies förs över vid varje HTTP-anrop oavsett om du behöver den eller inte.
Det är så det funkar va? Det känns ju som det naturliga.

Innebär det alltså att när klienten gör en request så måste hela cookien överföras först och läsas in innan själva exekveringen av siten börjar? Det är väl ingen nämnvärd tid det tar egentligen, men värt att känna till. För exekveringen kan ju knappast börja innan kakan är färdigöverförd etc.

Men cachas inget? Man kan väl ha upp till 200x4kb cookies vad jag förstod. Det blir ju nästan 1mb i så fall - som skulle kunna vara cachat hos servern och att det inte skickas över om inte nån checksumma har ändrats.

Aja, jag spånar mest, men jag behöver veta i princip allt relaterat utan och innantill nu. :)

Tack för svar

dAEk 2007-03-21 20:24

Det finns en gräns per domän och det är 20 stycken cookies där varje kaka kan vara 4 kb stor, inklusive dess namn. Olika webbläsare kan ha olika maxvärden för antalet kakor men 20 stycken a 4 kb är bra siffror att ha i huvudet. :)

Vill du veta mer om kakor har jag följande länkar i min gigantiska bokmärkessamling:Trevlig läsning. ;)

/r Tog bort lite felaktigheter.

totoo 2007-03-21 20:48

tack, det ska bli intressant och se om jag kan lära mig nåt mer.

Jag har iaf insett att det här med cookies spelar en mycket större roll än vad jag trodde. Kakorna måste ju överföras från klienten till servern innan sidgenereringen börjar. Detta innebär ju att om jag har stora kakor och kass uppkoppling så står ju webbserven bara och väntar på att få skicka något till mottagaren. Detta kan ju få rätt allvarliga konsekvenser. Jag gör t.ex. mina kakor rätt stora i mitt forum då det lagras där vilka trådar som man har besökt - och när.

Det blir en del efter ett tag!

Vettefan hur man löser allt på bästa sätt. Att lagra i sessioner kanske fungerar, men de har ju en tendens att dö vid lite oberäknerliga tillfällen (t.ex. lite inaktivitet) så då vill ju inte besökarna få alla trådar markerade som olästa igen... =/

guran 2007-03-21 21:41

Du kan knappast har något att vinna på att lagra information i en kaka än i databasen. I en kaka kan användaren ändra på data utan att du kan hindra det, medan ändringar i databasen har du kontrollen över. Och vad händer om användaren raderar sina kakor? Då försvinner kanske viktigt information eller en nödvändig bit i pusslet. Dessutom är det hela beroende av vilken dator användaren använder. Tvinga inte användaren har att vissa inställningar på sin data. Går bra hemma, men sedan är användaren på jobbet, skolan, biblioteket, caféet, polaren osv. och då kan helt andra förutsättningar gälla för lagring och mottagande av kakor.

Jag anser även att så mycket onödig trafik som möjligt som går till besökaren ska bort. Anledningen är att det finns tjänter där användaren får betala för mängden trafiken och då är det inte så roligt att betala för något som inte är nödvändigt.

totoo 2007-03-22 00:25

ha något att vinna... Mjo, det tror jag faktiskt.

Det enda jag lagrar i kakor är vilka trådar man har besökt och när (förutom sessionskakan).

Nästan alla forumsmjukvaror gör så för att man vill undvika att skriva till databasen varje gång någon besöker en tråd vilket är rätt dumt om man har hög belastning.

Jag vill så långt det bara går spara "små oviktiga saker" i cookies eller på nåt annat billigt sätt. Förut hade jag sessioner i standardutförande (på fil hos servern) vilket jag har fått för mig är extremt snabbt... Men nu ligger sessionerna i databas (snart iaf, det är på g) så då försvinner ju (den eventuella) optimeringen att lägga saker i sessionen.

Jag tror att cookies är det bästa alternativet.

totoo 2007-03-22 02:06

Fick en tokig idé...

Finns det nån cookieinställning som gör att den INTE överförs till servern? Alltså en långsiktig cache hos klienten bara som jag kan leka med via javascript. Alltså som en js-variabel som inte försvinner när sidan laddar om.

Tror jag kan göra optimeringar med märkbar karaktär i så fall!

eliasson 2007-03-22 09:19

Vad försöker du åstakomma egentligen? :)
Varför kan du inte köra vanliga sessions som sparas serverside - på så sett skickas ju bara klientens SESS_ID och ingen annan information.

totoo 2007-03-22 13:54

Jo, men det vore ju en sämre lösning... Jag leker mycket med javascript, och det finns en hel del saker som jag genereras och styrs därigenom som servern inte behöver bli uppdaterad om. Jag skulle faktiskt se ett rätt stort potential i en kaka som inte skickades till servern vid varje sidladdning, utan snarare fungerar som en liten js-dump. Om servern kunde skriva till den (alltså när det finns eventuellt behov) så vore det klockrent, annars får man ta fullösningar för att ta sig runt det.


Alla tider är GMT +2. Klockan är nu 00:44.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson