2024年10月javascript的问题?为什么通过前端 .js 记用户日志会丢数据求答案

 更新时间:2024-10-12

  ⑴javascript的问题?为什么通过前端.js记用户日志会丢数据求答案

  ⑵本文目录javascript的问题为什么通过前端.js记用户日志会丢数据求答案javascript的问题《html》《head》《title》省市县关联菜单《/title》《metahttp-equiv="Content-Type"content="text/html;charset=gb"》《metaname="Generator"content="EditPlus"》《metaname="Keywords"content="下拉菜单,关联,多级"》《metaname="Description"content="此程序为简单的省市县关联下拉菜单"》《style》body,select{font-size:pt;font-family:Verdana;}a{color:red;text-decoration:none;}a:hover{text-decoration:underline;}《/style》《SCRIPTLANGUAGE="JavaScript"》《!--functionDsy(){this.Items={};}Dsy.prototype.add=function(id,iArray){this.Items=iArray;}Dsy.prototype.Exists=function(id){if(typeof(this.Items)=="undefined")returnfalse;returntrue;}functionchange(v){varstr="";for(i=;i《v;i++){str+=("_"+(document.getElementById(s).selectedIndex-));};varss=document.getElementById(s);with(ss){length=;options);if(v&&document.getElementById(s).selectedIndex》||!v){if(dsy.Exists(str)){ar=dsy.Items;for(i=;i《ar.length;i++)options);if(v)options.selected=true;}}if(++v《s.length){change(v);}}}vardsy=newDsy();dsy.add("",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",["为什么通过前端.js记用户日志会丢数据求答案.做点击跳转,用户点击后先跳到自己服务器上,然后由自己的服务器做重定向,并记录这一次请求.前端JavaScript监控用户鼠标行为,并及时上报到服务器这三种方法也分别有各自的优缺点,当时分析的是.绝对完整的记录.不过需要新增服务器响应跳转请求,并且如果跳转服务挂了会让用户压根到不了url指向的地方.目前所有的广告服务都是这样(而且点击串加密),Google的网页搜索很早就是这样,百度跟干上后也换成了这种.根据度厂员工在新浪微博上跟别人的讨论,即使是百度网页搜索那么大的量,算上灾备最多台跳转服务器可以搞定(根据公开资料,百度每天网页搜索量在十亿这个量级,按搜索引擎页面点击率%算,每天至少三亿次点击跳转请求)今天跟前端同学讨论,终于搞懂了为什么是这样.后端的思维是每发生一次事件就打一条日志,所以极难发生日志丢失的问题.而前端不能每发生一次事件就向服务器发请求打一次日志,这样会带来很大的网络开销并拖慢用户的浏览器,所以前端都是把要纪录的行为在用户端先缓存,等积累够若干条或过了若干秒后才向服务器汇总上报,如果在这个上报条件触发前浏览器崩溃掉,那日志就没了,或者用户关掉浏览器也会丢掉这部分数据(据说有一些方式可以响应关闭事件并上报日志,但具体方式不了解,另外前端同学反馈IE下丢数据现象更严重).所以丢数据这事其实是用户流畅度体验和数据完备性的一个平衡,如果让用户卡一点那丢失比例就低一点.另外接js汇报日志的服务器压力也是一个要考虑的点,因为如果真用js汇报,那一定就不止点击这点数据了,鼠标滚轮,悬停等事件显然是能有都有,服务器不一定扛的过来.。

  ⑶javascript的问题

  ⑷《html》《head》《title》省市县关联菜单《/title》《metahttp-equiv="Content-Type"content="text/html;charset=gb"》《metaname="Generator"content="EditPlus"》《metaname="Keywords"content="下拉菜单,关联,多级"》《metaname="Description"content="此程序为简单的省市县关联下拉菜单"》《style》body,select{font-size:pt;font-family:Verdana;}a{color:red;text-decoration:none;}a:hover{text-decoration:underline;}《/style》《SCRIPTLANGUAGE="JavaScript"》《!--functionDsy(){this.Items={};}Dsy.prototype.add=function(id,iArray){this.Items=iArray;}Dsy.prototype.Exists=function(id){if(typeof(this.Items)=="undefined")returnfalse;returntrue;}functionchange(v){varstr="";for(i=;i《v;i++){str+=("_"+(document.getElementById(s).selectedIndex-));};varss=document.getElementById(s);with(ss){length=;options);if(v&&document.getElementById(s).selectedIndex》||!v){if(dsy.Exists(str)){ar=dsy.Items;for(i=;i《ar.length;i++)options);if(v)options.selected=true;}}if(++v《s.length){change(v);}}}vardsy=newDsy();dsy.add("",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("_",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",);dsy.add("__",["

  ⑸为什么通过前端.js记用户日志会丢数据求答案

  ⑹做点击跳转,用户点击后先跳到自己服务器上,然后由自己的服务器做重定向,并记录这一次请求.前端JavaScript监控用户鼠标行为,并及时上报到服务器这三种方法也分别有各自的优缺点,当时分析的是.绝对完整的记录.不过需要新增服务器响应跳转请求,并且如果跳转服务挂了会让用户压根到不了url指向的地方.目前所有的广告服务都是这样(而且点击串加密),Google的网页搜索很早就是这样,百度跟干上后也换成了这种.根据度厂员工在新浪微博上跟别人的讨论,即使是百度网页搜索那么大的量,算上灾备最多台跳转服务器可以搞定(根据公开资料,百度每天网页搜索量在十亿这个量级,按搜索引擎页面点击率%算,每天至少三亿次点击跳转请求)今天跟前端同学讨论,终于搞懂了为什么是这样.后端的思维是每发生一次事件就打一条日志,所以极难发生日志丢失的问题.而前端不能每发生一次事件就向服务器发请求打一次日志,这样会带来很大的网络开销并拖慢用户的浏览器,所以前端都是把要纪录的行为在用户端先缓存,等积累够若干条或过了若干秒后才向服务器汇总上报,如果在这个上报条件触发前浏览器崩溃掉,那日志就没了,或者用户关掉浏览器也会丢掉这部分数据(据说有一些方式可以响应关闭事件并上报日志,但具体方式不了解,另外前端同学反馈IE下丢数据现象更严重).所以丢数据这事其实是用户流畅度体验和数据完备性的一个平衡,如果让用户卡一点那丢失比例就低一点.另外接js汇报日志的服务器压力也是一个要考虑的点,因为如果真用js汇报,那一定就不止点击这点数据了,鼠标滚轮,悬停等事件显然是能有都有,服务器不一定扛的过来.

您可能感兴趣的文章:

相关文章