Aș spune să stochez starea undeva pe server și să o coreleze cu sesiunea utilizatorului. În timp ce un modul cookie ar putea fi, probabil, un loc egal pentru a stoca lucrurile, dacă luați în considerare securitatea și dimensiunea datelor, păstrarea cât mai multor date pe server devine un lucru bun.
De exemplu, într-un set de terminale publice, ar fi bine ca cineva să privească conținutul cookie-ului și să vadă lista? Dacă da, cookie-ul este bine; dacă nu, veți dori doar un ID care să leagă utilizatorul de date. Acest lucru vă va permite, de asemenea, să vă asigurați că utilizatorul este autentificat pe site pentru a ajunge la acele date, mai degrabă decât să stocheze totul pe mașină - ar avea nevoie de o formă de acreditări precum și identificator.
Din perspectiva mărimii, sigur că nu vei fi prea preocupat de un cookie de 4K sau ceva pentru un utilizator de browser/bandă largă, dar dacă una dintre obiectivele tale este de a permite unui telefon mobil sau BlackBerry (nu pe 3G) să se conecteze și au o experiență rapidă (și nu se facturează pentru date), minimizarea cantității de date primite clientului va fi cheia.
Depozitarea serverului vă oferă, de asemenea, o anumită flexibilitate menționată în unele dintre celelalte răspunsuri - utilizatorul poate salva coșul de cumpărături pe o singură mașină și poate relua lucrul cu altul; poți lega coșul de cumpărături de o anumită formă de acreditare (mai degrabă decât de o sesiune tranzitorie) și persista căruța după ce utilizatorul și-a șters cookie-urile; veți obține un pic mai mult în ceea ce privește toleranța la erori - în cazul în care browser-ul utilizatorului se blochează, site-ul are în continuare datele sigure și sănătoase.
Dacă toleranța la erori este importantă, veți avea nevoie de un fel de magazin persistent ca o bază de date. Dacă nu, în memoria aplicației este probabil bine, dar veți pierde date dacă aplicația repornește. Dacă vă aflați într-un mediu de fermă, magazinul trebuie să fie accesibil la nivel central, așa că vă uitați din nou la o bază de date.
Indiferent dacă alegeți să tastați prin sesiune tranzitorie sau prin acreditări va depinde de faptul dacă utilizatorii își pot salva datele și se pot întoarce mai târziu pentru ao obține. Sesiunea tranzitorie va fi în cele din urmă curățată ca fiind "abandonată" și poate că e în regulă. Legarea la un profil de utilizator va permite utilizatorului să-și păstreze datele și să îl abandoneze în mod explicit. Oricum, aș folosi un fel de magazin de suport cum ar fi o bază de date pentru toleranța la erori și accesibilitatea centrală. (Sau poate că am oarengineering soluția?)