跟踪匿名用户活动

我需要使用启用的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个子问题,但它们是如此相关,我认为上下文很重要,所以我不想复制问题和上下文描述):

  1. 在性能和索引方面,整数字段是否更好? 请记住,TrackingToken不是主要关键字段!

  2. 你有什么其他想法我怎么能完成我概述的场景?

  3. 如果我决定使用手动生成整数TrackingTokens,那么可靠地生成/增加一个新的TrackingToken的最佳方法是什么? 假设许多并发用户将访问数据库。

要在这个多问题中回答你的第二个问题( 你还有其他想法我如何完成我概述的方案 ),请看这些:

使用ASP.NET + Cookie进行匿名个性化的有效方法

如何在IIS 7下为ASP.Net MVC应用程序的匿名用户创建本地用户配置文件?

如何通过我的应用程序支持匿名用户?

所有这些都与ASP.NET中的匿名配置文件有关。

Guid对于索引来说并不坏。 有一点需要考虑的是,如果有人想尝试游戏你的系统,Guid就不会那么容易在cookie中捏造。

(对于问题3)如果您决定使用TrackingTokens的手动生成,请确保在交易中保留整数,并且您非常谨慎,因为您将拥有独特的整数。 您还可以考虑让SQL服务器自动为您分配它们,它们也是唯一的。

每次新用户执行某些操作(例如投票)时创建访客用户帐户有什么问题? 当发生这种情况时,您使用UUID或其他唯一ID(不是您建议的整数)来保存cookie以增加安全性,并且一旦此用户注册,您所要做的就是将用户组从“guest”更改为“member” ”。 简单。