2011-03-29 52 views
0

我想將最近查看的配置文件列表存儲在cookie中。
我有一個網站,人們輸入遊戲角色ID(魔獸世界),並可以查看角色的個人資料。
字符標識由名稱(unicode,最多15個字符),服務器名稱(unicode,最多25個字符)和區域(2個字符,拉丁-1)組成。
我最近在Cookie中存儲了5個最近查看的字符,這些值是URL編碼,因爲並非所有的瀏覽器都是unicode-cookie友好的。將原始數據存儲在cookie中 - 好主意還是壞主意?

這使得這個cookie長達500個字符。

問題:這是一個合理的方法嗎?以下是我希望您評估的其他解決方案。

  1. 存儲characterId,因爲它在數據庫中定義。優點:小的cookie大小,缺點:a)字符可以從數據庫中刪除(數據庫只是一個緩存來加速更新),b)數據庫可以重新索引。
  2. 存儲名稱+服務器+區域散列,並通過散列在數據庫中查找它。缺點:a)再次,角色可以從數據庫中刪除,優點:耐馴化。
  3. 要求用戶創建一個帳戶並將其存儲在那裏。缺點:沒有人喜歡創建帳戶,我寧願不這樣做。

我分裂的頭髮和我現在的解決方案(在URL中存儲URL編碼列表)是否足夠好?

編輯:需要注意的是「最近的人物」名單是那裏只是爲了方便,如果它被清除是非常重要的 - 這是不是在所有的問題(這是類似於一個「最近的文件」在某些應用中) 。

回答

0

如果您目前的解決方案沒有遇到問題(或限制),我會保持原樣。請注意,通過存儲整個角色並顯示該數據,數據可能已過時。

我會將ID存儲在cookie中,並執行一些服務器端邏輯以從ID列表中返回可用字符。數據庫中不存在的ID可以跳過顯示並再次在ID列表中打開。

+0

好吧,在這種情況下,數據最不可能會過時,因爲名稱+服務器是角色的原始身份,所以它不會得到更多的標識。 – 2011-03-29 16:17:41

0

個人而言,我寧願將ID存儲在cookie中,並將其餘數據存儲在數據庫中。如果可以在用戶會話期間刪除數據,請爲用戶的會話創建一個新表(使用他們的session_id),並將 ID存儲在Cookie中。在該表中放入日期時間並定期(如在cron作業中)刪除超過x天的任何記錄。

相關問題