我會說存儲服務器上的某個地方的狀態,並將其關聯到用戶的會話。雖然cookie在表面上可能是存儲事物的平等位置,但如果考慮安全性和數據大小,儘可能多地在服務器上保留數據會成爲一件好事。
例如,在公共終端設置中,有人查看cookie的內容並查看列表是否可以?如果是這樣,餅乾很好;如果沒有,您只需要一個將用戶鏈接到數據的ID。這樣做還可以確保用戶通過網站身份驗證以獲取該數據,而不是將所有內容存儲在計算機上 - 他們需要某種形式的憑證以及會話標識符。
從尺寸的角度來看,當然,你不會過於擔心4K cookie或瀏覽器/寬帶用戶的東西,但如果你的目標之一是允許手機或黑莓(不是3G)連接起來並擁有精彩的體驗(而不是爲數據收取費用),最大限度地減少傳遞給客戶端的數據量是關鍵。
服務器存儲還爲您提供了一些其他答案中提到的一些靈活性 - 用戶可以將他們的購物車保存在一臺計算機上並在另一臺計算機上恢復工作;您可以將購物車綁定到某種形式的憑證(而不是暫時會話),並在用戶清除cookie後長時間保持購物車的狀態;您可以通過容錯的方式獲得更多信息 - 如果用戶的瀏覽器崩潰,該站點仍然具有安全可靠的數據。
如果容錯很重要,則需要某種類型的持久性存儲,如數據庫。如果沒有,應用程序內存可能沒問題,但如果應用程序重新啓動,則會丟失數據。如果您處於農場環境中,則該商店必須集中訪問,因此您再次查看數據庫。
您是否選擇通過臨時會話或通過憑證輸入密鑰將取決於用戶是否可以保存其數據並稍後返回以獲取該數據。瞬時會話最終會被清理爲「廢棄」,也許沒問題。綁定到用戶配置文件將讓用戶保留他們的數據並明確放棄它。無論哪種方式,我都會利用某種支持存儲,如數據庫來提供容錯和中央可訪問性。 (或者,也許我是過度工程的解決方案?)
甚至可能沒有數據庫(至少不是關係數據庫)...:) – stevenharman 2008-09-18 19:53:04
將它存儲在你的「服務器端」數據存儲:)。爲什麼有2個不同的數據存儲?存儲服務器端增加了更多的靈活性和安全性。 – 2008-09-18 19:59:46