跟踪匿名用户活动
我需要使用启用的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的最佳方法是什么? 假设许多并发用户将访问数据库。
要在这个多问题中回答你的第二个问题( 你还有其他想法我如何完成我概述的方案 ),请看这些:
使用ASP.NET + Cookie进行匿名个性化的有效方法
如何在IIS 7下为ASP.Net MVC应用程序的匿名用户创建本地用户配置文件?
如何通过我的应用程序支持匿名用户?
所有这些都与ASP.NET中的匿名配置文件有关。
Guid对于索引来说并不坏。 有一点需要考虑的是,如果有人想尝试游戏你的系统,Guid就不会那么容易在cookie中捏造。
(对于问题3)如果您决定使用TrackingTokens的手动生成,请确保在交易中保留整数,并且您非常谨慎,因为您将拥有独特的整数。 您还可以考虑让SQL服务器自动为您分配它们,它们也是唯一的。
每次新用户执行某些操作(例如投票)时创建访客用户帐户有什么问题? 当发生这种情况时,您使用UUID或其他唯一ID(不是您建议的整数)来保存cookie以增加安全性,并且一旦此用户注册,您所要做的就是将用户组从“guest”更改为“member” ”。 简单。