实现我自己的统计引擎,每个网站访问记录?

时间:2013-06-13 13:20:12

标签: asp.net-mvc google-analytics statistics glimpse

我应该为我们的ASP.NET MVC 4 Web应用程序创建一个内部统计机制。我们不会使用Google Analytics甚至Glimpse等外部广告。因为我不确定我是否可以从他们的API中提取所需的数据。

我们期望这种机制非常类似于Google Analytics,包括页面命中计数,引用,关键字等等。但仅部分页面不是全部。我们希望在自己的页面和报告中使用这些数据。

现在我有2个问题。忽略Google AnalyticsGlimpse并实施我自己的做法是否正确?如果是,每次访问网站时在数据库中保存记录是合理的,然后使用这些记录来提取统计数据?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

我认为你可以实现这两种情况。如果不了解您需要的业务逻辑,很难说。但是,如果您需要有关每个请求的更多详细信息(访问过的用户角色,某些特定统计信息的反向控制器/操作名称,特定资源的日志访问等),您可以使用操作过滤器轻松实现此目的。

public class StatisticFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        if (filterContext.IsChildAction) //if action call was from view like @Html.Action do nothing
            return;
        var CurrentUser = filterContext.RequestContext.HttpContext.User;
        if (CurrentUser.IsInRole("some_role"))
            return; //write logic for this role
        string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;            
        string actionNaem = filterContext.ActionDescriptor.ActionName;
        //here the id of the accessed resource - document, sale, page etc. 
        string id = filterContext.RequestContext.RouteData.Values["id"].ToString(); 
    }

}

多数民众赞成。您可以通过所需的任何逻辑扩展它。 在我的项目中,我有filds的统计表: 日期 - 时间戳,

控制器 - 字符串,

动作 - 字符串,

id - bigint

方法 - 字符串(POST,GET ......如果是post-submited)

user_id - bigint

并为每个执行的请求插入记录。所以我有关于任何统计数据请求的最重要信息。