解决方案:百度快照诊断有什么作用?应该如何进行?
优采云 发布时间: 2022-11-21 01:21解决方案:百度快照诊断有什么作用?应该如何进行?
相信大家在用PC端在百度上搜索内容的时候,一定会在每条搜索结果的下方看到百度快照的字样。你有没有试过点进去,然后你会看到一个基本都是文字内容的网页,你会发现这个网页的内容和你直接点标题进入的网页非常相似。下面就带大家了解一下百度快照的相关知识。
1、百度快照有什么作用?
" />
1、您在上网时是否遇到过“页面无法显示”,或者网页连接速度可能达到几十秒才打开页面。这时候使用百度快照,可以很好的解决这个问题。在网速很慢的情况下,通过百度服务器提取信息比通过原网站提取信息快很多。
2、另外,百度快照也可以作为某种证据,比如历史照片因历史变动而无法保存。就像一座城市在不断进步发展,往往会留下很多怀旧的照片。
3、当你打开百度在搜索引擎中搜索某个词时,如果文章内容比较多,你也可以使用百度快照在页面上用不同的背景颜色标记你的搜索词,便于查看一目了然。
4、您可以点击截图中的关键词直接跳转到文中第一次出现的位置,让您更方便的浏览网页。
" />
2、百度快照是怎么形成的?
百度搜索引擎对每个网站都进行了抢先预览,并对网页进行了快照,为用户存储了大量应急网页。百度快照功能将几乎所有网站的大部分页面都保存在百度服务器上,这样当您无法链接到您需要的网站时,百度的临时网页也可以作为应急之用。而且通过百度快照查找信息的速度比普通链接要快很多。由于百度快照的服务稳定,下载速度极快,不会再受到死链或网络拥堵的影响。
3、为什么SEO们如此关注百度快照的更新?
事实上,网站快照的更新频率与权重没有直接关系。如果百度快照有更新,就可以证明你的网站蜘蛛来抓取了。
解决方案:苏宁用户行为采集体系的演变
作者|许夏军编辑|秦云 1. 前言
在当今的互联网时代,人们花在互联网上的时间越来越多,用于工作、消费、娱乐、社交等活动。在互联网中,每时每刻都在产生海量的用户行为数据。对于各大互联网企业而言,便捷、准确、全面地采集
用户行为数据,并用于支持业务分析和提升用户体验,变得越来越重要。近年来,苏宁业务规模快速增长,涵盖零售、金融、文创、体育、物流等多个行业。2017年大促期间,仅苏宁易购一项业务就实现了7秒销售额过亿。记录。
在数据化经营战略下,苏宁大数据中心数据采集团队正逐步建立标准、通用的海量用户行为采集解决方案,服务于多种业态和业务场景,致力于为苏宁大数据打下坚实的数据基础系统。本文主要介绍苏宁用户行为采集系统的开发过程,分享苏宁在日志采集方面的一些经验和探索过程。
2. 早期行为日志采集方案介绍 2.1 基于苏宁易购业务的日志采集方案
与各大电商网站类似,苏宁的用户行为采集系统是在PC版苏宁易购的基础上开发的。早期我们提供了基于PC浏览器页面的用户行为采集方案,为苏宁采集页面浏览、点击事件等基础日志。目的地分析、站点访问路径分析、页面元素点击量分析等)。随着网站业务场景的完善和网站分析的逐步细化,我们共同定义了曝光、搜索、注册、购买等各类页面事件日志,以满足各种特定场景下的数据分析需求。需要。
在移动互联网快速发展和智能手机广泛普及的背景下,我们还提供手机浏览器页面和手机APP的用户行为采集解决方案。移动App的日志采集遵循浏览器页面的日志分类模式,即基础页面浏览日志和各类页面事件日志,并加入其特有的App启动日志。至此,苏宁的用户行为采集体系已经初具规模,但仍以苏宁易购业务为主。
2.2 日志采集实现方案介绍 浏览器页面日志采集
与业界的网页日志采集方案一样,苏宁浏览器的网页日志采集工作也是由开发者在页面html文档中嵌入一段JS脚本来完成的。在这篇文章中,我们称这个JS脚本为“JS集合”。
对于页面浏览日志,采集JS会在普通页面(区别于单个页面)加载时自动触发日志的参数采集和日志上报,即只需要将采集的JS正常嵌入到页面html文档中即可,无需额外的人工干预。页面浏览日志是计算页面PV、UV、跳出率、转化率等一系列指标的基础,是网站分析中最重要的日志。考虑到页面日志采集的准确性,尤其是站外登陆页面的日志采集,我们要求页面在页眉中引用采集到的JS,并尽可能提前其加载时间。同时我们以“页面dom文档树加载完成”作为页面加载完成的判断节点,
对于单个页面的页面浏览日志,考虑到页面之间的跳转不会重新加载页面,即无法自动触发页面浏览日志的采集
。因此,在这种场景下,需要暴露一个具体的参数传递方法供页面调用。手动触发页面访问日志的采集
也是业界的通行做法。
页面事件日志,采集JS对外暴露了多种页面调用的参数传递方式,当页面调用这些参数传递方式时,会触发具体事件日志的参数采集和日志上报。考虑到页面事件类型的多样性极高,我们将页面事件分为通用事件和自定义事件。
通用事件包括曝光、点击、搜索、注册、购买等覆盖场景多、日志量大的事件类型。为了满足同类业务的共同分析需求,我们为每一类通用事件提供了特定的参数。方法(即调用点击事件的参数传递方法,只会触发点击事件日志的采集
和上报)。
自定义事件允许业务方根据具体业务场景自行定义(我们提供自定义事件管理后台供业务人员注册事件名称和采集参数)满足个性化分析需求。为自定义事件提供统一的参数传递方式。调用该方法时,必须传入参数“事件类型”,以区分不同的自定义事件。上述各种事件参数传递方法必须在用户触发相应的交互行为时调用。因此,我们要求页面的前端开发人员将调用事件传参方法的采集代码植入到目标页面中,并绑定到相应的交互行为上,也就是俗称的“埋点”。
日志字段,无论是页面浏览日志还是页面事件日志,我们都定义了标准的日志格式,主要包括采集时间、访客&会员信息、浏览器信息、页面参数和事件参数。这些字段信息主要来自浏览器Cookies、页面全局变量、页面参数。对于页面浏览日志和页面事件日志,只有事件参数相关的字段不同,其他的都是一样的。标准的日志格式将为后续的ETL工作提供极大的便利,这也是我们提倡的。
移动应用日志采集
对于移动App的日志采集,目前业界主要有两种解决方案,即“App自己采集参数,拼接日志,完成上报”和“App集成特定的采集SDK,由采集SDK完成日志采集和上报”。报道”。苏宁采用第二种更常见的解决方案。它为每个要集成的应用程序提供 Android 和 IOS SDK。每个App在启动时都需要完成采集SDK的初始化。
如上所述,我们将移动应用日志分为三类:启动日志、页面浏览日志和页面事件日志。同时,我们也为手机APP定义了标准的日志格式,主要包括采集时间、访客&会员信息、设备信息、页面参数和事件参数。这些字段信息主要是从SDK或者接口参数中获取的。与浏览器页面日志类似,移动端App端的三种日志仅页面参数和事件参数不同,其他均相同。
启动日志,采集SDK根据App的生命周期自动判断App的启动和退出,无需人工干预。单独采集
启动日志,可以更准确地计算用户的启动时间,为分析人员提供准确的数据支持。
页面浏览日志。目前手机APP采集
页面浏览日志主要是通过客户端调用接口来实现,业界主要有两种方案,即“页面进入时调用接口并发送日志”和“两者都调用”页面进入和离开时页面离开时发送日志的接口”。苏宁采用第二种方案,即页面入口和页面出口接口必须成对调用,支持在页面退出界面 等待)。该方案可以大大提高计算页面停留时长的准确性和便捷性。
页面事件日志类似于浏览器对JS的采集
。采集SDK提供多种参数传递接口供App调用。当调用这些参数传递接口时,会触发特定事件日志的参数采集
和日志上报。在移动端app端,我们也将页面事件分为通用事件和自定义事件,划分方式和事件管理方式与浏览器端完全一致。
日志报告政策
移动端(iOS/Android)采集SDK原有的采集日志上报方案是在客户端初始化采集SDK时设置统一的上报时间间隔。在设定的时间间隔内,SDK采集
的用户行为日志会暂存在客户端缓存中。当到达上报时间后,采集SDK会将缓存中的各类日志合并上报给服务端统一的日志接收接口。. 大促期间,当流量峰值达到预警阈值时,只能采用粗略的降级方案。
采集方案设计之初,根据当时的业务场景,将移动端的日志类型分为启动日志、访问日志、注册日志、搜索日志、订单日志、自定义日志。近年来随着业务的发展变化,越来越多的日志被归类为自定义类型,日志的体量也越来越大(尤其是曝光日志),尤其是在大促期间,日志体量激增十几倍在这种情况下,下游处理自定义日志时会消耗越来越多的资源和时间,导致数据延迟增加,对下游的数据产品影响很大。
" />
2.3 总结
本部分简要介绍早期苏宁用户行为采集方案的设计思路和实现方案。在业务范围不断扩大、前端&客户端技术不断更新、业务场景不断丰富的过程中,原有方案也暴露出很多问题,例如“Hybrid应用中H5与Native日志的对接” 、“人工埋点工作量太大”等问题。下一部分,我们将重点介绍近两年苏宁用户行为日志采集方案演进的经验。
3. 苏宁用户行为日志采集方案的演进与探索 3.1 多格式多终端
业务类型较多,早期用户行为采集主要针对苏宁易购单一业务。在数据采集实践中,页面事件日志类型的划分是根据电商业务,如购买事件日志、商品加入购物车日志、商品库存日志等;页面浏览日志和页面事件日志涉及的埋藏内容和规范也是根据电子商务业务制定的。随着近年来苏宁业务的快速增长,苏宁的用户行为采集解决方案已逐步覆盖苏宁金融、PP视频、PP体育、龙珠直播、苏宁拼购、苏宁小店、苏宁推客、红孩子母婴等十个网站和app,这对于埋点规范的制定来说是一个不小的挑战。视频直播服务将关注用户播放视频的行为;O2O服务将关注用户的位置信息;金融服务将关注用户的开户、基金理财产品查询等行为。随着业务场景的不断丰富,不同类型的业务场景也在融合。例如,视频直播和游戏功能逐渐融入电商APP。在此背景下,制定可扩展的埋点规范显得尤为重要,尤其是对于业务类型快速扩张的互联网企业。金融服务将关注用户的开户、基金理财产品查询等行为。随着业务场景的不断丰富,不同类型的业务场景也在融合。例如,视频直播和游戏功能逐渐融入电商APP。在此背景下,制定可扩展的埋点规范显得尤为重要,尤其是对于业务类型快速扩张的互联网企业。金融服务将关注用户的开户、基金理财产品查询等行为。随着业务场景的不断丰富,不同类型的业务场景也在融合。例如,视频直播和游戏功能逐渐融入电商APP。在此背景下,制定可扩展的埋点规范显得尤为重要,尤其是对于业务类型快速扩张的互联网企业。
我们在分析电商用户行为数据时,往往会关注商品编码、门店编码、订单编码等信息,埋点时将多个常用参数按照固定规则拼接成一个字符串。该方案在业务类型相对固定的情况下,具有规则清晰、消息简洁的优点。但是,当业务类型越来越多,需要采集的业务参数越来越多时,就会显得力不从心。因此,在埋点页面参数和事件参数的时候,我们制定了埋点规范,形式为kv键值对(key=value)。需要增减埋点中kv键值对的个数。日志中存在kv键值对,可以是常规的json格式,也可以是带分隔符的字符串形式。
更多终端。早期的用户行为采集
解决方案仅针对浏览器页面和移动应用程序。随着业务的发展,我们陆续推出了PC端、各种小程序(微信、百度等)、智能手机端的桌面客户端。TV App,智能硬件用户行为采集解决方案。我们把PC桌面客户端、小程序、智能电视App、智能硬件看成是不同的终端。目前这些终端的用户行为采集方案与手机APP类似,都提供专门的JS或SDK采集用户行为数据。JS和SDK都对外暴露了多种参数传递接口,供业务方调用触发特定日志的采集
和上报。
3.2 连接H5和原生日志
采集
更多的业务和终端数据,可以帮助数据分析师更好地理解用户行为,画出苏宁用户的完整画像。好处是显而易见的,但也带来了很多挑战,比如对接H5和原生日志。
Hybrid App是目前主流的移动端APP类型,既包括原生页面,也包括内嵌H5页面。根据前期采集方案,原生页面的页面浏览日志和页面事件日志由采集SDK进行采集上报,而内嵌的H5页面是在应用自带的浏览器中打开的,所以H5页面的日志由JS采集
和报告采集
。由于采集方案不同,上报日志的格式、字段内容、接收服务器等都不同,这给后续分析用户在App中的完整访问路径带来了很多不便。目前业界有两种主流方案来解决原生页面和内嵌H5页面的日志隔离问题。
方案一、原生页面和app内嵌的H5页面采用不同的采集方案。虽然每个页面的PV、UV、点击等基本指标都可以正常计算,但是在还原用户在APP中的完整行为时会出现问题。. 因此,浏览器cookies可以用来存储一些标识字段。这个标识字段可以是用户的身份,也可以是设备的唯一ID等,可以准确匹配原生页面的日志。App 开发者可以轻松地将这些信息写入内置浏览器的 cookie 中。JS在采集
H5页面嵌入的各种日志时,只需要获取cookie中的具体标识,放入日志字段即可。后面处理数据的时候,内嵌H5页面的日志和原生页面的日志可以通过上面的特定标识进行合并。关联对应的日志,进而解决数据隔离的问题。
方案二,上述方案具有方便的特点,但后续计算成本高,经常会丢失H5页面的源页面。因此,苏宁的用户获取方案如下:
H5页面加载并采集JS后,通过采集的JS判断H5页面的运行环境是手机浏览器还是特定App。这里可以根据浏览器或者导航器的ua中的具体标识来判断。这个logo可以是App写的,也可以是采集SDK写的;
如果是手机浏览器打开H5页面,JS会采集
日志需要的字段信息,直接上报并发送页面日志给服务器;
如果在具体的App中打开H5页面,JS采集日志需要的字段信息,调用采集SDK约定的SDK提供的接口,通过接口将字段信息传递给采集SDK。常用的JsBridge用于实现JS与App的信息交互;
采集SDK获取采集JS传入的字段信息,识别日志类型,将字段信息解析拼接成对应的App日志格式,然后调用SDK内部接口上报日志。
该方案使得SDK能够上报H5页面嵌入的所有日志,更好的解决了H5与原生日志对接时遇到的诸多问题。同时,为了后续分析的方便,我们也建议对App和浏览器页面相关日志中的页面参数和业务参数制定标准和统一埋点规范。
连接H5和原生日志的问题不仅出现在Hybrid App中,各种小程序和PC桌面客户端也有出现,其解决方法与Hybrid App中使用的方法基本相同。完全相同的。目前,苏宁内部APP采用相同的用户行为采集方案。在连接H5和原生日志时,几乎所有的工作都由数据采集团队完成,没有前端和客户端开发人员的介入。同时,日志格式的开放也大大节省了后续的计算资源。
3.3 不可追踪的埋点
在用户行为采集的长期实践中,经常会遇到一个比较显着的问题。埋点,尤其是与页面点击事件&元素暴露事件相关的埋点,需要开发者为每个监控点添加监控代码,还需要保证这些代码与监控点一一对应。这是一个庞大而繁琐的过程。工作,并且容易出错或遗漏。因此,业界一直要求无痕追踪。常见的概念包括“无日志记录、全程跟踪和可视化跟踪”。苏宁的用户行为采集团队在跟踪追踪方面也进行了很多探索。在积累了很多经验之后,我们目前把最终的方案称为全埋点方案。
点击事件的无痕采集和点击事件在页面元素上的埋点一直是无痕埋点实践的重点。开发者在为页面点击事件手动埋点时,编写的埋点内容的核心是页面中各个交互元素的ID。此 ID 可以是数字字符串或文字字符串。每个元素ID在当前页面是全局唯一的,每个元素ID都需要在配置后台命名。无痕埋点的核心思想是让页面交互元素的ID无痕化,不需要开发者手动编写(省去了手动编码的步骤,大大降低了出错的可能性),同时保证独特性。页面交互元素的唯一ID,
采集JS采集SDK后自动*敏*感*词*页面中交互元素的点击事件,获取对应的元素路径,放入点击日志并上报。这是原创
版本的点击事件无痕采集方案。经历了这个初级阶段。关于页面交互元素点击事件的自动*敏*感*词*,前端或者客户端开发者习惯称之为hook点击事件,在web端、Android端、IOS端都有相应的实现方法,所以这里我就不细说了。
点击事件可视化配置,根据上述方案采集
的点击日志,可以计算出每个页面中每个元素路径对应的点击次数,但实际上元素路径几乎不可能被数据分析师(产品经理,运营商或专业人士)数据分析师)理解。
" />
因此,单纯的点击事件的无痕采集并不能体现其价值,还需要搭配可视化配置(以及点击数据的可视化展示)。我们将可视化配置的核心思想总结为所见即所得,即把采集到的元素路径还原到真实的页面,并绑定到页面中实际交互的元素上,使得元素路径以易于理解的形式呈现给数据分析师。实现点击事件可视化配置的方案对于浏览器网页和APP略有不同,但都需要专门的可视化配置后台。
对于html页面,前端开发者可以直接根据xpath(或者css选择器)在页面中定位到一个dom元素,修改对应dom元素的样式,比如给元素添加遮罩效果或者修改背景色. 这些效果都是在特定的后台界面实现的,不会影响真实用户的体验。如下图所示,数据分析人员可以直观的了解每个元素路径在页面上对应的位置。在此基础上,可以给元素命名,也可以直观的展示元素在页面上的点击量。
App中原生页面点击事件的可视化配置,目前业界主要有两种方案。一种是直接在手机端可视化配置App;另一种是将手机屏幕上的内容投射到电脑屏幕上(在专用后台显示),在配置后台进行可视化配置。考虑到用户体验和方案的通用性,我们采用了第二种方案,能够以极低的成本快速支持任意App访问点击事件的无缝采集和可视化配置。在实践中,我们采用了以下方法:
启动需要可视化配置和点击数据的应用,使用特殊手势(扫码也可以)开启SDK的截图功能;
抓包SDK对前台运行的App内容进行截图,发送图片到服务器,同时遍历屏幕范围内的所有控件信息,获取控件的路径、坐标、大小,并一起发送到服务器;
配置后台从服务器获取截图和控件信息后,在界面上绘制当前App的页面,并在每个控件的位置添加边框效果(遮罩效果也可以);
由于点击事件无痕采集方案采集了控件路径,后台界面开发者可以将对应的点击数据还原到真实页面,也可以直观地命名每一个控件路径。
在点击事件无缝采集和可视化配置的实践中,还有很多细节需要注意,比如如何无痕采集被点击元素对应的业务参数,如何快速命名一批元素/控件,以及如何快速命名一批元素/控件。App页面控件复用时如何保证控件路径的唯一性和准确性等,在探索和解决这些细节的过程中,这里不再赘述。
与点击事件类似,我们也实践过浏览器网页中元素暴露事件的无痕采集方案。该方案实现了自动监测页面图像元素曝光并采集
相关统计信息的效果。由于暴露日志具有日志量大、并发量大的特点,我们在开发过程中着重降低性能损失,取得了较好的效果。在曝光日志的内容上,我们也保证字段信息与点击事件一致。因此,在无缝采集点击事件的基础上,不再需要重复配置,可以快速实现数据可视化。
3.4 日志安全
对于日志加密方案,我们充分考虑了对称加密和非对称加密的优缺点:对称加密使用相同的密钥进行加密和解密,所以速度快,但由于密钥需要通过网络传输,安全性能不高;非对称加密使用一对密钥,公钥和私钥,安全性高,但加解密速度慢。非对称加密虽然非常安全,但是与对称加密相比速度非常慢,所以仍然使用对称加密来传输消息,但是对称加密中使用的密钥可以通过非对称加密来发送。过程如下:
(1) APP首先生成一个随机数作为对称密钥。(2) APP向服务器请求公钥。(3) 服务器将带有版本号的公钥发送给APP。(4) APP使用这个版本的公钥加密自己的对称密钥。(5) APP将加密后的对称密钥(带有公钥的版本号)发送给服务器。(6)服务器使用版本号对应的私钥解密,得到APP的对称密钥。(7) APP和服务端可以使用对称密钥对通讯内容进行加解密。
3.5 日志传输
通过后台采集管理平台,为不同App配置各类日志的上报地址和上报时间间隔。App初始化采集SDK后,SDK调用上报配置接口,后台根据请求中的a*敏*感*词*ey返回对应App的配置信息。SDK Report 根据获取的配置参数进行日志记录。
原有的手机客户端SDK日志上报,只使用单一的时间间隔策略来控制日志上报的周期。通过实践,我们发现这种策略是有风险的。如果进行大量的行为操作,上报时合并后的请求体会过长,导致上传失败。对于这种情况,我们添加了按日志数量报告的策略。如果缓存中的日志条数达到阈值,也会触发日志上报。目前采用时间间隔+日志条数相结合的上报策略,可以更灵活有效地支持日益复杂的在线采集场景,也是业界普遍采用的方案。
将原手机客户端的所有日志类型合并上报给服务器,服务器根据日志类型进行分发。考虑到苏宁用户行为日志的规模和复杂性,我们决定将日志从服务端迁移到客户端,减少服务端日志处理时分支判断的消耗,作为后续计算资源分配的前提,提高资源利用效率. 此外,移动端日志的导流也为大促降级方案的优化提供了必要条件。大促降级方案实现了从原来简单粗暴的一刀切到现有的根据日志重要性对应的延迟上报和分集群上报,
4.总结
考虑到文章篇幅,本文仅介绍苏宁用户行为采集团队在埋点规范制定、H5与原生日志打通、埋点无痕化、日志传输与日志安全等方面的一些探索过程与经验如跨终端业务类型开放用户ID、推广期间日志分发等实践经验,将在后续文章中分享。当然,用户行为采集方案的各种探索和完善,都是基于解决用户(数据分析师、实施人员、下游数据产品)的痛点,提升数据质量。在公司不同的发展时期,我们需要优先考虑和解决的问题也各不相同。作为用户行为数据分析和数据应用的底层支撑部分,苏宁用户行为采集系统也在紧跟业务发展和行业技术发展,不断更新迭代,致力于更简单、更准确、更全面的用户行为采集该方案为苏宁大数据体系奠定了坚实的数据基础。
关于作者
徐霞军,苏宁易购IT总部大数据中心负责人之一。多年大数据行业背景,数学、统计学毕业,主导设计开发苏宁行为数据采集产品。苏宁行为数据采集产品服务于苏宁全行业数百款App、网站、小程序等智能硬件产品,为各条线提供完善的流量数据分析解决方案,为各条线支撑提供稳定的数据管理。
活动推荐
推荐大家关注InfoQ中国主办的ArchSummit全球架构师峰会。大会将于12月7-8日在北京国际会议中心举行。来自Google、Netflix、LinkedIn、腾讯、阿里、百度、京东等数百家知名企业的架构师将前来分享自己的架构实践,并专门设立前端技术专题,分享他们最新的黑科技和研发经验。