【发布时间】:2010-10-25 12:04:06
【问题描述】:
我正在开发一个 asp.net 应用程序,在该应用程序中我正在创建一个跟踪用户活动的页面,例如我的应用程序中没有访问过的页面。
其中我还需要找出每个用户自登录以来收到的总 KB(数据)和自登录以来发送的总 KB(数据)。
我怎样才能做到这一点?
【问题讨论】:
我正在开发一个 asp.net 应用程序,在该应用程序中我正在创建一个跟踪用户活动的页面,例如我的应用程序中没有访问过的页面。
其中我还需要找出每个用户自登录以来收到的总 KB(数据)和自登录以来发送的总 KB(数据)。
我怎样才能做到这一点?
【问题讨论】:
这个问题实际上并没有明确什么包含在“发送/接收的总数据”中。虽然 HttpModule 可以帮助您处理 aspx 输出,但它不包括图像、css、js 等文件的大小。虽然我不确定他为什么想要这个,但它超出了 Google Analytics 的能力。
我猜 HTTPModule 可以做到(?)如果您将所有资源类型映射为由 .NET 框架处理,那么您可以在为它们提供服务时“测量”所有不同文件的大小。通过跟踪登录 cookie(或您使用的任何东西),将所有这些数据写入数据库并近乎实时地报告它可能很容易(虽然可能很慢)。
发送/接收字节的明显位置存储是 IIS 日志文件。使用LogParser 将使您能够报告该数据 - 如果您编写会话 cookie(或跟踪 IP 地址或其他),您可以将该数据链接到每个单独的用户登录。但是,仅基于 IIS 日志,几乎不可能“实时”完成。
我看到的另一个可能对您有所帮助的开发人员项目是 Matt Berseth's 'openurchin' 和 LiveTraffic page- 他的示例使用了类似 Google Analytics 的 javascript,但会将数据发回给您。您需要自己编写代码来解析/保存数据,包括找出发送/接收的字节信息。
也许如果您提供更多关于您想要完成的任务的信息,我们可以提供更好的解决方案? Google Analytics 的作用真棒;并提供有关页面访问、进入、退出、唯一用户等的详细报告 - 非常直观的报告,易于使用。不过,并没有真正下降到“用户级别”。所以这一切都取决于你需要做什么......
【讨论】:
首先,我会考虑您是否需要自己实现此功能,Google Analytics(分析)可以很好地跟踪使用情况并且是免费的。你可以在http://www.google.com/analytics 上找到它,你需要做的就是在你的所有页面中添加一些 javascript。您的母版页是执行此操作的好地方。
如果您一心想要自己做这件事,实现它的一个好方法是使用 HttpModule。在每个页面请求期间都会调用一个 HttpModule。
在 HttpModule 的 Init 方法中,您可以捕获 BeginRequest 和 EndRequest 事件。您可以查看 BeginRequest 中的 Request 对象和 EndRequest 中的 Response 对象。您可以在 ContentLength 属性中找到发送的数据量。您需要将所需的任何信息存储在数据库中。在显示用户活动的页面上,您只需从数据库中检索这些值。
不过,我会认真考虑使用 Google Analytics。
【讨论】: