我需要使用已启用的Cookie跟踪匿名用户。
基本上,他们会浏览网站,与网站进行互动,我希望在不需要实际注册的情况下为他们提供最佳体验。稍后,如果他们想要,他们可以注册,他们的网站活动将与他们的新帐户绑定。
像Stackoverflow这样的东西,但不同的是我希望我的大多数用户不会实际注册,但偶尔会回来。
所以,我不想在Users表中创建一堆伪记录。因为我只需要一张桌子,所以我在考虑这样的事情:
VoteHistory表
Id TrackingToken VotingData
1 100 ...
2 100 ...
3 101 ...
4 102 ...
用户表
Id TrackingToken OtherUsersColumns
1 100 ...
TrackingTokens表
LastTrackingToken
102
我会增加一个LastTrackingToken整数字段,只需将该值添加到用户cookie并使用它跟踪他的投票活动。然后,如果他决定注册,我只需将他的cookie TrackingToken值添加到他的用户记录中。
最初我在考虑一个Guid / uniqueidentifier,但由于投票表会非常大而我需要查询它,我担心索引uniqueidentifier字段。
所以,问题是(抱歉3个子问题,但它们是如此相关,我认为上下文很重要,所以我不想复制问题和上下文描述):
在性能和索引方面,整数字段是否更好?请记住,TrackingToken不是主要关键字段!
您对我如何完成我概述的方案有其他想法吗?
如果我决定使用手动生成整数TrackingTokens,那么可靠地生成/增加一个新的TrackingToken的最佳方法是什么?假设许多并发用户将访问数据库。
答案 0 :(得分:2)
在这个多问题中回答你的第二个问题(你还有其他想法我如何完成我概述的方案),请看这些:
efficient ways to anonymous personalization using ASP.NET + Cookie
How can I support anonymous users with my application?
所有这些都与ASP.NET中的匿名配置文件有关。
答案 1 :(得分:1)
Guid对索引来说并不坏。有一点需要考虑的是,如果有人想尝试游戏你的系统,那么Guid就不会那么容易在cookie中捏造。
答案 2 :(得分:0)
(问题3) 如果您决定使用TrackingTokens的手动生成,请确保在交易中保留整数,并且您将非常谨慎地保证您将拥有独特的整数。您还可以考虑让SQL服务器自动为您分配它们,它们也是唯一的。
答案 3 :(得分:0)
每次新用户执行某些操作(例如投票)时,创建访客用户帐户有什么问题?当发生这种情况时,您使用UUID或其他唯一ID(不是您建议的整数)来保存cookie以增加安全性,并且一旦此用户注册,您所要做的就是将用户组从“guest”更改为“member” ”。简单。