Javascript 如何在Web应用程序中处理用户审核日志(或其他频繁的客户端操作)?

Javascript 如何在Web应用程序中处理用户审核日志(或其他频繁的客户端操作)?,javascript,angularjs,asp.net-web-api,google-analytics,audit-logging,Javascript,Angularjs,Asp.net Web Api,Google Analytics,Audit Logging,这里是建筑问题。我有一个Web应用程序(HTML5/Javascript/AngularJS),它通过Web API将用户活动记录到后端数据库中。此功能在整个应用程序中的菜单和按钮单击等事件中非常频繁地运行。为每一个这样的事件调用一个API似乎是一种扩展,我想知道这些更新的最佳实践是什么,或者,在他们的客户端脚本上如何使用Google Analytics之类的服务来实现这一点?我一直在寻找与我工作的地方非常相似的东西。首先,您确实希望发送到API的数据尽可能小,以便发送所有这些事件不会占用太多带

这里是建筑问题。我有一个Web应用程序(HTML5/Javascript/AngularJS),它通过Web API将用户活动记录到后端数据库中。此功能在整个应用程序中的菜单和按钮单击等事件中非常频繁地运行。为每一个这样的事件调用一个API似乎是一种扩展,我想知道这些更新的最佳实践是什么,或者,在他们的客户端脚本上如何使用Google Analytics之类的服务来实现这一点?

我一直在寻找与我工作的地方非常相似的东西。首先,您确实希望发送到API的数据尽可能小,以便发送所有这些事件不会占用太多带宽。我们意识到的下一件事是使用某种队列,RabbitMQ、Azure服务总线、MSMQ或Amazon SQS或类似的东西

API端点应该只获取数据并将其放入队列中。然后,让另一个程序或服务以自己的速度读取队列上的消息,并向数据库中插入任何内容

在高峰时间,您不应该看到API的性能有任何下降,当您的系统受到冲击时,唯一会发生的事情是数据可能需要几秒钟到几分钟才能插入数据库


您实际上是在队列中进行批处理,不必担心批处理客户端

我一直在研究与我工作的地方非常相似的东西。首先,您确实希望发送到API的数据尽可能小,以便发送所有这些事件不会占用太多带宽。我们意识到的下一件事是使用某种队列,RabbitMQ、Azure服务总线、MSMQ或Amazon SQS或类似的东西

API端点应该只获取数据并将其放入队列中。然后,让另一个程序或服务以自己的速度读取队列上的消息,并向数据库中插入任何内容

在高峰时间,您不应该看到API的性能有任何下降,当您的系统受到冲击时,唯一会发生的事情是数据可能需要几秒钟到几分钟才能插入数据库


您实际上是在队列中进行批处理,不必担心批处理客户端

这里的关键问题是,“记录用户活动”是什么意思?我很想在你可以的地方使用GA,在你自己的数据库日志中,信息是机密的,或者对GA来说太复杂而无法处理,或者(如果你使用的是免费的GA帐户),GA是快照,而你不希望这样。这是你的最后一个问题,GA快照(也就是说,不完全处理每一个事件)在它想要的地方,除非你为一个完整的许可证付出很多。顺便说一句,你可能想看看GA定制尺寸。谢谢你的回答。希望在本地记录用户活动的原因是因为客户端需要对记录的信息进行保密和完全控制。这一切都取决于您真正需要跟踪的事件/用户数量,然后。。。。很明显,你的数据库是否能承受额外的流量。您可能想考虑一些具有轻量级JavaScript客户端的排队机制,数据库写入异步发生。(IBM MQ显然有一个:)这里的关键问题是,“记录用户活动”是什么意思?我很想在你可以的地方使用GA,在你自己的数据库日志中,信息是机密的,或者对GA来说太复杂而无法处理,或者(如果你使用的是免费的GA帐户),GA是快照,而你不希望这样。这是你的最后一个问题,GA快照(也就是说,不完全处理每一个事件)在它想要的地方,除非你为一个完整的许可证付出很多。顺便说一句,你可能想看看GA定制尺寸。谢谢你的回答。希望在本地记录用户活动的原因是因为客户端需要对记录的信息进行保密和完全控制。这一切都取决于您真正需要跟踪的事件/用户数量,然后。。。。很明显,你的数据库是否能承受额外的流量。您可能想考虑一些具有轻量级JavaScript客户端的排队机制,数据库写入异步发生。(IBM MQ显然有一个:)