将原始数据存储在cookies中-好主意还是坏主意?

将原始数据存储在cookies中-好主意还是坏主意?,cookies,client-side-data,Cookies,Client Side Data,我想在cookie中存储最近查看的配置文件列表。 我有一个网站,人们可以在其中输入游戏角色id(魔兽世界),并可以查看角色的个人资料。 字符标识包括名称(unicode,最多15个字符)、服务器名称(unicode,最多25个字符)和区域(2个字符,拉丁语-1)。 我在cookie中最多存储5个最近查看的字符,URL编码值,因为并非所有浏览器都是unicode cookie友好型的 这使得这个cookie有两个500字符长 问题:这是合理的方法吗?这里有几个其他的解决方案,我想让你评估一下 存储

我想在cookie中存储最近查看的配置文件列表。
我有一个网站,人们可以在其中输入游戏角色id(魔兽世界),并可以查看角色的个人资料。
字符标识包括名称(unicode,最多15个字符)、服务器名称(unicode,最多25个字符)和区域(2个字符,拉丁语-1)。
我在cookie中最多存储5个最近查看的字符,URL编码值,因为并非所有浏览器都是unicode cookie友好型的

这使得这个cookie有两个500字符长

问题:这是合理的方法吗?这里有几个其他的解决方案,我想让你评估一下

  • 存储数据库中定义的字符。优点:小cookie大小,缺点:a)可以从数据库中删除字符(数据库只是一个缓存,用于加速更新),b)数据库可以重新编制索引
  • 存储名称+服务器+区域哈希,并在数据库中按哈希查找。缺点:a)同样,字符可以从数据库中删除,优点:抗重新索引
  • 要求用户创建一个帐户并将其存储在那里。缺点:没有人喜欢创建帐户,我也不想这样做
  • 我是在吹毛求疵,而我目前的解决方案(将URL编码的列表存储在cookie中)已经足够好了吗


    编辑:需要注意的是,“最近使用的字符”列表只是为了方便起见,如果它被清除的话-这根本不是问题(在某些应用程序中它类似于“最近使用的文件”)

    我个人更喜欢将ID存储在cookie中,并将其余数据存储在数据库中。如果可以在用户会话期间删除数据,请仅为用户会话创建一个新表(使用其会话id),并将该id存储在cookie中。将datetime放入该表中,并定期(如在cron作业中)删除任何超过x天的记录。

    如果您当前的解决方案没有遇到问题(或限制),我会保持原样。请注意,通过存储整个字符并显示该数据,数据可能已过时


    我会将ID存储在cookie中,并执行一些服务器端逻辑来从ID列表中返回可用字符。数据库中不存在的ID可以跳过显示,并再次出现在ID列表中。

    在这种情况下,数据最不可能过时,因为名称+服务器是字符的原始标识,因此它不会得到更多的标识。