跟踪匿名用户活动

时间:2009-03-24 21:10:30

标签: c# sql-server asp.net-mvc

我需要使用已启用的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的最佳方法是什么?假设许多并发用户将访问数据库。

4 个答案:

答案 0 :(得分:2)

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

efficient ways to anonymous personalization using ASP.NET + Cookie

How can I create a local user profile for the anonymous user of an ASP.Net MVC application under IIS 7?

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” ”。简单。