我应该为我们的ASP.NET MVC 4
Web应用程序创建一个内部统计机制。我们不会使用Google Analytics
甚至Glimpse
等外部广告。因为我不确定我是否可以从他们的API中提取所需的数据。
我们期望这种机制非常类似于Google Analytics
,包括页面命中计数,引用,关键字等等。但仅部分页面不是全部。我们希望在自己的页面和报告中使用这些数据。
现在我有2个问题。忽略Google Analytics
或Glimpse
并实施我自己的做法是否正确?如果是,每次访问网站时在数据库中保存记录是合理的,然后使用这些记录来提取统计数据?
非常感谢任何帮助
答案 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
并为每个执行的请求插入记录。所以我有关于任何统计数据请求的最重要信息。