2

我正在尝试在 ASP.net 环境中实现匿名个性化。我知道 ASP.NET 2.0 提供Profile。但是,我想尽可能避免访问数据库,因为我正在处理的站点是一个流量相对较高的站点。

另一个明显的解决方案是 cookie,但鉴于cookie 的限制,我想知道是否有人有任何有效的方法将信息存储到 cookie 中。有谁知道亚马逊或雅虎如何处理匿名的。个性化?

最终,我们试图根据预定义活动中的一组业务规则大纲为我们的用户群提供不同的动态内容。原因是为了衡量我们网站的转化率。可以在网站的所有不同页面上使用相同的广告系列。我需要将其设置为 cookie 的原因是,如果我们希望用户能够看到之前提供的相同内容,那么用户可以看到它。所以这就是我现在在 cookie 中的内容。

 campaign code:page id:result display

您可以看到,如果有很多广告系列并且每个广告系列在许多页面上使用,这将会增加。

提前致谢!

4

3 回答 3

2

如果数据库负载是一个问题,您可以在用户在网站上启动他的会话时检索个性化,然后将其存储在会话状态中。这样,只有第一个页面加载会调用数据库。

您可以将用户 ID 存储在 cookie 中。

只要记住当用户更新他的偏好时将会话保留在数据库中,如果有很多匿名用户访问您的网站,一段时间后删除旧的数据库记录也可能是一个好主意。

于 2008-10-27T09:22:00.660 回答
1

如果您想保留更改,例如每个广告系列视图,则实际上没有任何方法可以访问以写入这些更改。如果使用得当,ASP.NET 成员资格在大容量站点(每天超过 100 万)上还不错。例如,您应该将对成员资格提供程序的调用包装在缓存对象中,并经常刷新(短期到期)。此外,请确保在 RoleProvider 上设置 cacheRefreshInterval。这将强制 asp.net 将角色缓存在 cookie 中,以减少数据库活动。

另一种看待这个问题的方法是采纳 Ady 的建议并将成员资格分离到一个单独的数据库中。再一次,ASP.NET Membership 提供程序的另一个重要特性 - 您可以设置不同的 SQL 连接字符串,并将其加载到不同的数据库和/或服务器上。

围绕会员提供程序还有其他几种可以真正提高性能的技术。一些快速的谷歌搜索出现了其中的一些。

于 2009-03-24T21:52:16.747 回答
0

我会为访问者创建一个数据库记录,并且只将 ID 存储在 cookie 中,这样您就可以从数据库中查找所有个性化详细信息,并将 cookie 大小保持在最低限度。

如果数据库速度是一个问题,也许使用不同的数据库和服务器来存储个性化。

或者,您可以将个人数据存储在文件系统中,并在访问者返回匹配 cookie ID 时加载到会话中。

如果识别用户和清除 cookie 是个问题,您可以冷使用 ActiveX 控件,但这需要在客户端计算机上安装,人们可能会反对。

于 2008-10-27T09:16:16.537 回答