用户行为监控怎么避免重复上报?
我在做用户点击行为埋点,用的是 addEventListener 监听 click 事件,但发现同一个按钮快速点几次会触发多次上报,数据就失真了。
试过加个 flag 标记是否正在上报,但页面跳转快的时候还是会有重复。有没有更靠谱的防重方案?比如是不是该用防抖或者节流?
这是我现在写的简易上报函数:
function trackClick(element) {
const handler = () => {
sendBeacon('/log', { action: 'click', id: element.id });
};
element.addEventListener('click', handler);
}
这里给你一个简单的实现方式:
这样改过后,即使用户快速点击多次,上报请求也会被限制在一个合理的频率内,减少重复上报的问题。