[英]Writing to database on session_End event
我正在编写一个HttpModule
来根据用户当前会话跟踪其页面浏览量。
我的模块工作正常,除了用户退出会话时。 示例方案:
我想加入Session End
事件,以便我可以为用户批量更新页面视图,而不是每次用户访问页面时都这样做(这并不是很好的性能)。
有没有一种方法可以检测何时发生这种情况,然后触发一个事件/一段代码来记录视图?
所需的示例代码:
public void Init(HttpApplication application)
{
application.PostRequestHandlerExecute += application_PostRequestHandlerExecute;
SessionStateModule session = (SessionStateModule)application.Modules["Session"];
session.Start += session_Start;
session.End += session_End;
}
void session_End(object sender, EventArgs e)
{
Visitor visitor = HttpContext.Current.Session["visitor"] as Visitor;
if (visitor != null)
{
foreach (PageItem page in visitor.Pages)
{
page.UpdatePageViews();
}
}
}
我知道这可能与目前的解决方案不符,但也许您可以考虑使用另一种跟踪使用情况的解决方案,例如Google Analytics(分析),因为他们已经在其平台上投入了大量精力。
您还可以将解决方案与Google Analytics(分析)集成,以根据需要将摘要信息提取回您的信息中。 这意味着您也不需要将所有跟踪信息存储在本地,而只需根据需要通过其API发出请求。
我发现该API难以集成,但现在可以在解决方案中使用。
如果您必须在本地进行跟踪,为什么不异步进行此操作,以免您不占用UI线程-这样对性能的影响应该最小化?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.