CN111581558A - 页面加载时长的确定方法、装置、设备及存储介质 - Google Patents
页面加载时长的确定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111581558A CN111581558A CN202010345560.6A CN202010345560A CN111581558A CN 111581558 A CN111581558 A CN 111581558A CN 202010345560 A CN202010345560 A CN 202010345560A CN 111581558 A CN111581558 A CN 111581558A
- Authority
- CN
- China
- Prior art keywords
- view
- sub
- layout
- time
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008859 change Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 239000000126 substance Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本公开关于一种页面加载时长的确定方法、装置、设备及存储介质,所述页面包括:主视图和多级子视图,所述方法包括:使用每级子视图向下级子视图发送主视图信息,响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间,根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。本公开提供了一种确定页面加载时长的新方法,基于各级视图的布局时间确定页面加载时长,确定结果准确度高。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种页面加载时长的确定方法、装置、设备及存储介质。
背景技术
iOS系统是由苹果公司开发的移动操作系统,通常在iOS系统上安装的应用程序设有一组视图控制器,用于对用户界面的显示内容进行管理。视图管理器通过依次调用一些函数实现对象管理,视图管理器依次调用的函数主要包括:initWithCoder函数、awakeFromNib函数、viewDidLoad函数、viewWillAppear函数、viewWillLayoutSubviews函数、viewDidLayoutSubviews函数和viewDidAppear函数。
页面加载时长用于衡量用户感受到的页面加载所需的时间,目前使用viewDidAppear函数的调用时间减去viewDidLoad函数的调用时间,将所得的时间差确定为页面加载时长。参见图1,使用viewDidAppear函数和viewDidLoad函数的调用时间计算的页面加载时长为T1。
实现上,一方面,为提高用户体验,开发者会使用一些手段延迟页面中部分数据的加载时机,例如延迟网络请求、分页加载或懒加载的加载时机,另一方面,页面中一些视图可能需要多次加载,参见图1,基于上述因素导致的页面加载时长T等于T3结束时间-T1开始时间。
通过比较可知,T1相对于T存在较大偏差,使用viewDidAppear函数和viewDidLoad函数的调用时间计算的页面加载时长T1不够准确。
发明内容
本公开提供一种页面加载时长的确定方法、装置及系统,以至少解决相关技术中利用viewDidAppear函数和viewDidLoad函数的调用时间计算的页面加载时长不够准确的技术问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种页面加载时长的确定方法,所述页面包括:主视图和多级子视图,所述方法包括:
使用每级子视图向下级子视图发送主视图信息;
响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间;
根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。
在一实施例中,所述使用每级子视图向下级子视图发送主视图信息,包括:
使用所述每级子视图将所述主视图信息存储在所述下级子视图对应的存储空间中,使得所述下级子视图从所述存储空间中获取所述主视图信息。
在一实施例中,所述布局时间包括:布局开始时间和布局结束时间;所述根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长,包括:
基于所述每级子视图的布局时间,确定所述多级子视图最后一次进行视图布局的第一布局结束时间;
确定所述第一布局结束时间距当前时间的时长是否大于目标超时阈值;
若是,则计算所述第一布局结束时间与所述主视图的布局开始时间的差值;
根据所述差值确定所述页面加载时长。
在一实施例中,所述方法还包括:
获取历史加载所述页面时所述每级子视图的显示位置信息;
从所述多级子视图中,确定显示位置信息满足预设信息条件的第一子视图;
确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,各第二子视图是所述多级子视图中先于第一子视图开始布局的子视图;
若是,则基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,使得再次加载所述页面时在所述第一子视图开始布局之前确定所述页面已经加载结束,获得所述目标超时阈值。
在一实施例中,所述确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,包括:
确定所述第一子视图是否位于预设列表中,所述预设列表包括所述多级子视图中的所有目标子视图,每个目标子视图的布局开始时间晚于在所述目标子视图之前开始布局的所有子视图的布局结束时间。
在一实施例中,所述基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,获得所述目标超时阈值,包括:
从所有第二子视图中,确定出布局结束时间最晚的目标第二子视图;
计算所述第一子视图的布局开始时间与所述目标第二子视图的布局结束时间的时间差;
调整历史加载所述页面时使用的超时阈值至所述时间差以下,获得所述目标超时阈值。
在一实施例中,所述确定显示位置信息满足预设信息条件的第一子视图,包括:
将显示位置变化次数大于或等于次数阈值的子视图确定为所述第一子视图;和/或
将显示位置变化频率大于或等于频率阈值的子视图确定为所述第一子视图。
在一实施例中,所述方法还包括:
确定所述页面加载时长是否超过预设加载时长;
若是,则使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素,或者,将所述主视图和所述多级子视图的布局时间上报给服务器,使得所述服务器使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素。
在一实施例中,所述使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素,包括:
使用所述主视图和所述多级子视图的布局时间,确定所述主视图和所述多级子视图中是否存在布局时长不满足预设布局时长条件的视图;
若是,则确定因视图因素导致所述页面加载超时;
若否,则确定因网络因素导致所述页面加载超时。
根据本公开实施例的第二方面,提供一种页面加载时长的确定装置,所述页面包括:主视图和多级子视图,所述装置包括:
第一发送模块,被配置为使用每级子视图向下级子视图发送主视图信息;
第二发送模块,被配置为响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间;
第一确定模块,被配置为根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。
在一实施例中,所述第一发送模块,被配置为使用所述每级子视图将所述主视图信息存储在所述下级子视图对应的存储空间中,使得所述下级子视图从所述存储空间中获取所述主视图信息。
在一实施例中,所述布局时间包括:布局开始时间和布局结束时间;所述第一确定模块,包括:
第一确定子模块,被配置为基于所述每级子视图的布局时间,确定所述多级子视图最后一次进行视图布局的第一布局结束时间;
第二确定子模块,被配置为确定所述第一布局结束时间距当前时间的时长是否大于目标超时阈值;
第一计算子模块,被配置为若是,则计算所述第一布局结束时间与所述主视图的布局开始时间的差值;
第三确定子模块,被配置为根据所述差值确定所述页面加载时长。
在一实施例中,所述装置还包括:
获取模块,被配置为获取历史加载所述页面时所述每级子视图的显示位置信息;
第二确定模块,被配置为从所述多级子视图中,确定显示位置信息满足预设信息条件的第一子视图;
第三确定模块,被配置为确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,各第二子视图是所述多级子视图中先于第一子视图开始布局的子视图;
调整模块,被配置为若是,则基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,使得再次加载所述页面时在所述第一子视图开始布局之前确定所述页面已经加载结束,获得所述目标超时阈值。
在一实施例中,所述第三确定模块,被配置为确定所述第一子视图是否位于预设列表中,所述预设列表包括所述多级子视图中的所有目标子视图,每个目标子视图的布局开始时间晚于在所述目标子视图之前开始布局的所有子视图的布局结束时间。
在一实施例中,所述调整模块,包括:
第四确定子模块,被配置为从所有第二子视图中,确定出布局结束时间最晚的目标第二子视图;
第二计算子模块,被配置为计算所述第一子视图的布局开始时间与所述目标第二子视图的布局结束时间的时间差;
调整子模块,被配置为调整历史加载所述页面时使用的超时阈值至所述时间差以下,获得所述目标超时阈值。
在一实施例中,所述第二确定模块,包括:
第五确定子模块,被配置为将显示位置变化次数大于或等于次数阈值的子视图确定为所述第一子视图;和/或
第六确定子模块,被配置为将显示位置变化频率大于或等于频率阈值的子视图确定为所述第一子视图。
在一实施例中,所述装置还包括:
第四确定模块,被配置为确定所述页面加载时长是否超过预设加载时长;
第五确定模块,被配置为若是,则使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素;或者,
上报模块,被配置为若是,则将所述主视图和所述多级子视图的布局时间上报给服务器,使得所述服务器使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素。
在一实施例中,所述第五确定模块,包括:
第七确定子模块,被配置为使用所述主视图和所述多级子视图的布局时间,确定所述主视图和所述多级子视图中是否存在布局时长不满足预设布局时长条件的视图;
第八确定子模块,被配置为若是,则确定因视图因素导致所述页面加载超时;
第九确定子模块,被配置为若否,则确定因网络因素导致所述页面加载超时。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述任一项所述的页面加载时长的确定方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述任一项所述的页面加载时长的确定方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由电子设备的处理器执行时,使得所述电子设备能够执行第一方面以及第一方面的可能实现方式中任一项所述的页面加载时长的确定方法所执行的操作。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开通过在页面创建过程中,使用每级子视图向下级子视图发送主视图信息,响应于每级子视图完成布局,使每级子视图根据主视图信息向主视图发送布局时间,根据主视图接收的各级子视图的布局时间和主视图的布局时间,确定页面的页面加载时长,本公开实施例提供了一种确定页面加载时长的新方法,基于各级视图的布局时间确定页面加载时长,确定结果准确度高。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种页面加载过程的示意图;
图2是根据一示例性实施例示出的一种页面加载时长的确定方法的流程图;
图3是根据一示例性实施例示出的一种页面的结构示意图;
图4是根据一示例性实施例示出的一种页面加载时长的示意图;
图5是根据一示例性实施例示出的一种目标超时阈值的确定方法的流程图;
图6是根据一示例性实施例示出的一种导致页面加载超时的因素的确定方法的流程图;
图7是根据一示例性实施例示出的一种页面加载时长的确定装置的框图;
图8是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图2是根据一示例性实施例示出的一种页面加载时长的确定方法的流程图。本实施例的页面加载时长的确定方法可以用于在iOS系统上安装的应用程序中,具体可以用于应用程序的视图管理器(ViewController)中。如图2所示,包括以下步骤S101-S103。
在步骤S101中,使用每级子视图向下级子视图发送主视图信息。
视图作为页面的功能单元,在软件开发上由一段代码构成,定义了用户视觉上看到的页面内容。
对于iOS系统上安装应用程序,应用程序显示的页面包括主视图和多级子视图,主视图和多级子视图呈多层级排布,例如,主视图和多级子视图呈树状排布。
图3是根据一示例性实施例示出的一种页面的结构示意图,图3所示的页面包括呈树状排布的根视图和多个子视图,其中,ViewController(页面)代表根视图,Layer1-Layer7分别代表子视图,Layer1是ViewController(页面)的子视图,Layer2、Layer3和Layer4分别是Layer1的子视图,Layer5是Layer2的子视图,Layer6和Layer7分别是Layer5的子视图。
应用程序在创建页面时,会使用一视图管理器对该页面的显示内容进行管理。例如,即时聊天软件设有通讯录页面,在创建通讯录页面的过程中,使用一视图管理器对通讯录页面的显示内容进行管理,即时聊天软件还设有对话框页面,在创建对话框页面的过程中,使用另一视图管理器对对话框页面的显示内容进行管理。
在一个实施例中,视图管理器使用每级子视图将主视图信息存储在下级子视图对应的存储空间中,使得下级子视图从对应的存储空间中获取主视图信息。主视图信息可以包括:主视图对应的内存地址、主视图标识等。下级子视图对应的存储空间可以是下级子视图对应的内存地址。
视图管理器可以通知主视图配置子视图的布局信息,主视图在接收到通知后开始配置一级子视图的布局信息,以及将主视图信息存储在一级子视图对应的存储空间中,之后视图管理器通知一级子视图配置子视图的布局信息,一级子视图在接收到通知后开始配置二级子视图的布局信息,从自身对应的存储空间中获取主视图信息,并将主视图信息存储在二级子视图对应的存储空间中,按照视图级别由高到低的顺序执行上述方法,使得每级子视图均获取到主视图信息。视图的布局信息可以包括:视图尺寸、显示位置、显示颜色等。
可以利用AOP(Aspect Oriented Programming,面向切面编程)技术对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。本公开实施例可以使用AOP技术实现相应功能,具体地,供给方的开发人员基于上述功能需求开发一段代码,将这段代码接入业务方的应用程序中,待这段代码被编译后,应用程序的原代码就会被修改,从而实现上述功能。
相关技术中,为获得准确的页面加载时长,业务方开发人员会在应用程序的整段代码的前面和后面分别加一行代码,用于获取应用程序开始执行时的时间以及执行结束时的时间,从而计算出页面加载时长。然而,这种方法增加了业务方的开发人员的代码开发量。
相比于相关技术中的方法,本公开实施例通过使用AOP技术实现对应用程序的原代码的自动修改,省去了业务方的开发人员的代码开发量,对应用程序的线上业务无侵入性,保证了线上业务的正常运行,同时适用于iOS系统上安装的各种应用程序,可推广使用。
在步骤S102中,响应于每级子视图完成布局,使每级子视图根据主视图信息向主视图发送布局时间。
每级子视图根据上级视图配置的布局信息,对本级子视图进行布局。例如,一级子视图根据主视图配置的布局信息,对本级子视图(即一级子视图)进行布局,二级子视图根据一级子视图配置的布局信息,对本级子视图(即二级子视图)进行布局。
每级子视图具有发送自身的布局时间给主视图的功能,布局时间可以包括:布局开始时间和布局结束时间。每级子视图完成布局后,获取本级子视图的布局时间,基于主视图信息将本级子视图的布局时间发送给主视图。例如,本级子视图可以将布局时间发送至主视图对应的存储空间中,以便主视图从对应的存储空间中获取子视图的布局时间。
在步骤S103中,根据主视图接收的各级子视图的布局时间和主视图的布局时间,确定页面的页面加载时长。
布局时间可以包括:布局开始时间和布局结束时间,视图管理器根据主视图接收的各级子视图的布局时间和主视图的布局时间,确定页面的页面加载时长的操作,可以通过下面方式实现:首先,基于每级子视图的布局时间,确定多级子视图最后一次进行视图布局的第一布局结束时间;其次,确定第一布局结束时间距当前时间的时长是否大于目标超时阈值;再次,若第一布局结束时间距当前时间的时长大于目标超时阈值,则计算第一布局结束时间与主视图的布局开始时间的差值;最后,根据差值确定页面加载时长。
目标超时阈值可以是预设的固定值,也可以是根据实际页面加载情况确定的,视图管理器可以根据历史加载页面时的页面加载情况,确定目标超时阈值。
可以将该差值确定为页面加载时长。
图4是根据一示例性实施例示出的一种页面加载时长的示意图,参见图4,应用程序创建页面过程中,主视图首先对本视图进行布局,获得主视图的布局开始时间T′1和布局结束时间,之后各级子视图依次开始对本级子视图进行布局,获取多级子视图最后一次进行视图布局的布局结束时间T′2,在确定布局结束时间T′2距当前时间的时长大于目标超时阈值后,确定页面加载结束,将T′2减去T′1,将计算结果确定为页面加载时长。
在一实施例中,可以在应用程序的设置界面上设一开关,当开关打开后,应用程序开始确定页面加载时长,当开关关闭后,应用程序停止确定页面加载时长,用户可以根据需要控制开关的使用状态,控制应用程序的功能。
由上述描述可知,通过在页面创建过程中,使用每级子视图向下级子视图发送主视图信息,响应于每级子视图完成布局,使每级子视图根据主视图信息向主视图发送布局时间,根据主视图接收的各级子视图的布局时间和主视图的布局时间,确定页面的页面加载时长,本公开实施例提供了一种确定页面加载时长的新方法,基于各级视图的布局时间确定页面加载时长,确定结果准确度高。
图5是根据一示例性实施例示出的一种目标超时阈值的确定方法的流程图,图5所示的方法包括:
在步骤201中,获取历史加载页面时每级子视图的显示位置信息。
在历史加载页面的过程中,页面包括仅需要加载一次,加载完成后显示位置固定的视图,也可能包括需要重新加载多次,显示位置频繁发生变化的视图。
对于需要重新加载多次的各子视图,每次完成布局后将布局时间发送给主视图,视图管理器对主视图接收的、一子视图的所有布局时间进行统计,获得一子视图的显示位置信息。
子视图的显示位置信息可以包括以下至少一项:子视图在整个页面中的显示位置变化次数、子视图在整个页面中的显示位置变化频率等。
在步骤202中,从多级子视图中,确定显示位置信息满足预设信息条件的第一子视图。
预设信息条件有多种,例如,针对显示位置变化次数设置的条件、针对显示位置变化频率设置的条件、针对显示位置变化次数和显示位置变化频率设置的条件等。
视图管理器可以将显示位置变化次数大于或等于次数阈值的子视图确定为第一子视图,或者,可以将显示位置变化频率大于或等于频率阈值的子视图确定为第一子视图,或者,可以将显示位置变化次数大于或等于次数阈值并且显示位置变化频率大于或等于频率阈值的子视图确定为第一子视图。
在步骤203中,确定第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,各第二子视图是多级子视图中先于第一子视图开始布局的子视图。
视图管理器可以直接对第一子视图的布局开始时间和所有第二子视图的布局结束时间进行比较。
或者,可以对页面包括的每个子视图的布局时间进行分析,针对每个子视图,确定子视图的布局开始时间是否晚于在该子视图之前开始布局的所有子视图的布局结束时间,若是,则将该子视图确定为目标子视图,基于满足上述条件的所有目标子视图,获得预设列表。预设列表包括多级子视图中的所有目标子视图,每个目标子视图的布局开始时间晚于在目标子视图之前开始布局的所有子视图的布局结束时间。
视图管理器可以预先获取该预设列表,通过确定第一子视图是否位于预设列表中,从而确定第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间。
如果第一子视图位于预设列表中,则确定第一子视图的布局开始时间晚于所有第二子视图的布局结束时间,如果第一子视图未在预设列表中,则确定第一子视图的布局开始时间不晚于所有第二子视图的布局结束时间。
在步骤204中,若是,则基于第一子视图的布局开始时间和各第二子视图的布局结束时间,对历史加载页面时使用的超时阈值进行调整,使得再次加载页面时在第一子视图开始布局之前确定页面已经加载结束,获得目标超时阈值。
若确定第一子视图的布局开始时间不晚于所有第二子视图的布局结束时间,则不对历史记载页面时使用的超时阈值进行调整,仍使用原来的超时阈值。
在一个实施例中,可以针对应用程序的所有页面设置同一目标超时阈值,也可以针对应用程序的不同页面设置不同的目标超时阈值。
在针对应用程序的不同页面设置不同的目标超时阈值的情况下,可以根据历史加载同一页面时视图的显示位置信息和布局时间,对历史加载同一页面时使用的超时阈值进行调整,获得同一页面对应的目标超时阈值。
在一个实施例中,视图管理器可以从所有第二子视图中,确定出布局结束时间最晚的目标第二子视图,计算第一子视图的布局开始时间与目标第二子视图的布局结束时间的时间差,调整历史加载页面时使用的超时阈值至该时间差以下,获得目标超时阈值。
可以按照预设幅度,减小历史加载页面时使用的超时阈值,从而获得目标超时阈值。具体地,使用历史加载页面时使用的第一超时阈值减去预设幅度,若减小后的超时阈值仍然大于该时间差,则使用减小后的超时阈值减去预设幅度,按照上述方法,直至多次减小后的超时阈值小于该时间差。
例如,假设图3中的Layer7子视图是所有子视图中最后一个开始布局的子视图,在页面加载过程中,Layer7子视图的显示位置频繁发生变化,例如从页面的左侧移到右侧,又从页面的右侧移到左侧等,导致视图管理器无法确定Layer7子视图的布局结束时间,进而无法确定页面的页面加载时长。
在这种情况下,视图管理器可以确定Layer7子视图的布局开始时间,是否晚于其他所有子视图的布局结束时间,若是,则确定其他所有子视图中Layer6子视图的布局结束时间最晚,计算Layer6子视图的布局结束时间与Layer7子视图的布局开始时间的时间差,将时间差的一半确定为目标超时阈值。基于目标超时阈值的使用,使得在Layer6子视图布局结束后,在Layer7子视图布局开始前,已经确定整个页面加载结束,从而确定出页面加载时长。这时的页面加载时长是基于根视图的布局开始时间和Layer6子视图的布局结束时间确定的。
本实施例中,基于历史加载页面时视图的显示位置信息和布局时间,对历史加载页面时使用的超时阈值进行自动调整,从而解决了因视图显示位置频繁发生变化导致无法确定页面加载时长的问题。
图6是根据一示例性实施例示出的一种导致页面加载超时的因素的确定方法的流程图,图6所示的方法包括:
在步骤301中,确定页面加载时长是否超过预设加载时长。
在步骤302中,若是,则使用主视图和多级子视图的布局时间,确定导致页面加载超时的因素。
导致页面加载超时的因素有多种,例如,可能因为视图布局任务重导致整个页面加载超时,也可能因为网络不良导致页面加载超时。
视图管理器可以使用主视图和多级子视图的布局时间,确定主视图和多级子视图中是否存在布局时长不满足预设布局时长条件的视图,若是,则确定因视图因素导致页面加载超时,若否,则确定因网络因素导致页面加载超时。
例如,视图管理器确定主视图和多级子视图的布局时长是否均小于预设值,若主视图和多级子视图的布局时长均小于预设值,则确定网络不良导致页面加载超时,若主视图和多级子视图中至少一个视图的布局时长大于或等于预设值,则确定因视图的布局任务过重导致页面加载超时。
又如,视图管理器对主视图和多级子视图的布局时长进行比较,若一个视图的布局时长远大于其他视图的布局时长,则确定该视图的布局任务过重,导致整个页面加载超时。
在步骤303中,若是,则将主视图和多级子视图的布局时间上报给服务器,使得服务器使用主视图和多级子视图的布局时间,确定导致页面加载超时的因素。
视图管理器具有将主视图和多级子视图的布局时间上报给服务器的功能,使得服务器基于应用程序在创建页面过程中各视图的布局时间,对导致页面加载超时的因素进行分析。
服务器可以采用上述的类似方法,基于主视图和多级子视图的布局时间,确定导致页面加载超时的因素,本实施例在此不再赘述。
经测试,使用本公开实施例提供的方法确定页面加载时长,能够统计到因为网络请求等技术引起的页面加载超时,而使用viewDidAppear函数和viewDidLoad函数的调用时间确定页面加载时长,无法统计到因为网络请求等技术引起的页面加载超时,可见,使用本公开实施例提供的方法确定的页面加载时长的准确度高。
由上述描述可知,视图管理器可以确定页面是否加载超时,以及确定导致页面加载超时的因素,视图管理器的功能得到丰富。
视图管理器可以将主视图和多级子视图的布局时间上报给服务器,使得服务器基于应用程序在创建页面过程中各视图的布局时间,对导致页面加载超时的因素进行分析。
图7是根据一示例性实施例示出的一种页面加载时长的确定装置的框图。本实施例的页面加载时长的确定装置可以用于在iOS系统上安装的应用程序中,具体可以用于应用程序的视图管理器(ViewController)中。页面包括:主视图和多级子视图。如图7所示,该装置包括:第一发送模块41、第二发送模块42和第一确定模块43;其中,
所述第一发送模块41,被配置为使用每级子视图向下级子视图发送主视图信息;
所述第二发送模块42,被配置为响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间;
所述第一确定模块43,被配置为根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。
在一实施例中,所述第一发送模块41,可以被配置为使用所述每级子视图将所述主视图信息存储在所述下级子视图对应的存储空间中,使得所述下级子视图从所述存储空间中获取所述主视图信息。
在一实施例中,所述布局时间包括:布局开始时间和布局结束时间;所述第一确定模块43,可以包括:第一确定子模块、第二确定子模块、第一计算子模块和第三确定子模块;其中,
所述第一确定子模块,被配置为基于所述每级子视图的布局时间,确定所述多级子视图最后一次进行视图布局的第一布局结束时间;
所述第二确定子模块,被配置为确定所述第一布局结束时间距当前时间的时长是否大于目标超时阈值;
所述第一计算子模块,被配置为若是,则计算所述第一布局结束时间与所述主视图的布局开始时间的差值;
所述第三确定子模块,被配置为根据所述差值确定所述页面加载时长。
在一实施例中,所述装置还可以包括:获取模块、第二确定模块、第三确定模块和调整模块;其中,
所述获取模块,被配置为获取历史加载所述页面时所述每级子视图的显示位置信息;
所述第二确定模块,被配置为从所述多级子视图中,确定显示位置信息满足预设信息条件的第一子视图;
所述第三确定模块,被配置为确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,各第二子视图是所述多级子视图中先于第一子视图开始布局的子视图;
所述调整模块,被配置为若是,则基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,使得再次加载所述页面时在所述第一子视图开始布局之前确定所述页面已经加载结束,获得所述目标超时阈值。
在一实施例中,所述第三确定模块,可以被配置为确定所述第一子视图是否位于预设列表中,所述预设列表包括所述多级子视图中的所有目标子视图,每个目标子视图的布局开始时间晚于在所述目标子视图之前开始布局的所有子视图的布局结束时间。
在一实施例中,所述调整模块,可以包括:第四确定子模块、第二计算子模块和调整子模块;其中,
所述第四确定子模块,被配置为从所有第二子视图中,确定出布局结束时间最晚的目标第二子视图;
所述第二计算子模块,被配置为计算所述第一子视图的布局开始时间与所述目标第二子视图的布局结束时间的时间差;
所述调整子模块,被配置为调整历史加载所述页面时使用的超时阈值至所述时间差以下,获得所述目标超时阈值。
在一实施例中,所述第二确定模块,可以包括:第五确定子模块和第六确定子模块;其中,
所述第五确定子模块,被配置为将显示位置变化次数大于或等于次数阈值的子视图确定为所述第一子视图;和/或
所述第六确定子模块,被配置为将显示位置变化频率大于或等于频率阈值的子视图确定为所述第一子视图。
在一实施例中,所述装置还可以包括:第四确定模块、第五确定模块和上报模块;其中,
所述第四确定模块,被配置为确定所述页面加载时长是否超过预设加载时长;
所述第五确定模块,被配置为若是,则使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素;或者,
所述上报模块,被配置为若是,则将所述主视图和所述多级子视图的布局时间上报给服务器,使得所述服务器使用所述主视图和所述多级子视图的布局时间,确定导致所述页面加载超时的因素。
在一实施例中,所述第五确定模块,可以包括:第七确定子模块、第八确定子模块和第九确定子模块;其中,
所述第七确定子模块,被配置为使用所述主视图和所述多级子视图的布局时间,确定所述主视图和所述多级子视图中是否存在布局时长不满足预设布局时长条件的视图;
所述第八确定子模块,被配置为若是,则确定因视图因素导致所述页面加载超时;
所述第九确定子模块,被配置为若否,则确定因网络因素导致所述页面加载超时。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
值得说明的是,上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本公开的页面加载时长的确定装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的,其中计算机程序用于执行上述图2、图5和图6所示实施例提供的页面加载时长的确定方法。从硬件层面而言,如图8所示,为本公开的电子设备的硬件结构图,除了图8所示的处理器、网络接口、内存以及非易失性存储器之外,所述电子设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等;从硬件结构上来讲该设备还可能是分布式的设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
另一方面,本公开还提供了一种计算机可读存储介质,当该存储介质中存储的计算机程序由电子设备的处理器执行时,使得电子设备能够执行上述图2、图5和图6所示实施例提供的页面加载时长的确定方法。
另一方面,本公开还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由电子设备的处理器执行时,使得电子设备能够执行上述图2、图5和图6所示实施例提供的页面加载时长的确定方法。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种页面加载时长的确定方法,其特征在于,所述页面包括:主视图和多级子视图,所述方法包括:
使用每级子视图向下级子视图发送主视图信息;
响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间;
根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。
2.根据权利要求1所述的方法,其特征在于,所述使用每级子视图向下级子视图发送主视图信息,包括:
使用所述每级子视图将所述主视图信息存储在所述下级子视图对应的存储空间中,使得所述下级子视图从所述存储空间中获取所述主视图信息。
3.根据权利要求1所述的方法,其特征在于,所述布局时间包括:布局开始时间和布局结束时间;所述根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长,包括:
基于所述每级子视图的布局时间,确定所述多级子视图最后一次进行视图布局的第一布局结束时间;
确定所述第一布局结束时间距当前时间的时长是否大于目标超时阈值;
若是,则计算所述第一布局结束时间与所述主视图的布局开始时间的差值;
根据所述差值确定所述页面加载时长。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取历史加载所述页面时所述每级子视图的显示位置信息;
从所述多级子视图中,确定显示位置信息满足预设信息条件的第一子视图;
确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,各第二子视图是所述多级子视图中先于第一子视图开始布局的子视图;
若是,则基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,使得再次加载所述页面时在所述第一子视图开始布局之前确定所述页面已经加载结束,获得所述目标超时阈值。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一子视图的布局开始时间是否晚于所有第二子视图的布局结束时间,包括:
确定所述第一子视图是否位于预设列表中,所述预设列表包括所述多级子视图中的所有目标子视图,每个目标子视图的布局开始时间晚于在所述目标子视图之前开始布局的所有子视图的布局结束时间。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第一子视图的布局开始时间和所述各第二子视图的布局结束时间,对历史加载所述页面时使用的超时阈值进行调整,获得所述目标超时阈值,包括:
从所有第二子视图中,确定出布局结束时间最晚的目标第二子视图;
计算所述第一子视图的布局开始时间与所述目标第二子视图的布局结束时间的时间差;
调整历史加载所述页面时使用的超时阈值至所述时间差以下,获得所述目标超时阈值。
7.根据权利要求4所述的方法,其特征在于,所述确定显示位置信息满足预设信息条件的第一子视图,包括:
将显示位置变化次数大于或等于次数阈值的子视图确定为所述第一子视图;和/或
将显示位置变化频率大于或等于频率阈值的子视图确定为所述第一子视图。
8.一种页面加载时长的确定装置,其特征在于,所述页面包括:主视图和多级子视图,所述装置包括:
第一发送模块,被配置为使用每级子视图向下级子视图发送主视图信息;
第二发送模块,被配置为响应于所述每级子视图完成布局,使所述每级子视图根据所述主视图信息向主视图发送布局时间;
第一确定模块,被配置为根据所述主视图接收的各级子视图的布局时间和所述主视图的布局时间,确定所述页面的页面加载时长。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的页面加载时长的确定方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的页面加载时长的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010345560.6A CN111581558B (zh) | 2020-04-27 | 2020-04-27 | 页面加载时长的确定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010345560.6A CN111581558B (zh) | 2020-04-27 | 2020-04-27 | 页面加载时长的确定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581558A true CN111581558A (zh) | 2020-08-25 |
CN111581558B CN111581558B (zh) | 2024-03-05 |
Family
ID=72113154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010345560.6A Active CN111581558B (zh) | 2020-04-27 | 2020-04-27 | 页面加载时长的确定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581558B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991749A (zh) * | 2023-09-28 | 2023-11-03 | 厦门她趣信息技术有限公司 | 一种视图渲染问题排查方法、系统、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451193A (zh) * | 2017-06-29 | 2017-12-08 | 北京三快在线科技有限公司 | 一种客户端页面加载时间的获取方法及装置,电子设备 |
CN107562610A (zh) * | 2017-09-21 | 2018-01-09 | 上海谦问万答吧云计算科技有限公司 | 获取页面加载时间的方法、装置、终端和介质 |
CN110287441A (zh) * | 2019-06-27 | 2019-09-27 | 广州华多网络科技有限公司 | 页面加载时长的检测方法、装置、设备和存储介质 |
US20190364133A1 (en) * | 2018-05-14 | 2019-11-28 | Ucweb Singapore Pte. Ltd. | Display processing method and apparatus, and electronic terminal therefor |
CN110717121A (zh) * | 2019-08-27 | 2020-01-21 | 北京奇艺世纪科技有限公司 | 一种页面首屏时间确定方法及装置 |
CN110825456A (zh) * | 2019-11-01 | 2020-02-21 | 北京博睿宏远数据科技股份有限公司 | 加载时间计算方法、装置、计算机设备及存储介质 |
CN111752817A (zh) * | 2020-06-30 | 2020-10-09 | 汉海信息技术(上海)有限公司 | 页面加载时长的确定方法、装置、设备及存储介质 |
-
2020
- 2020-04-27 CN CN202010345560.6A patent/CN111581558B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451193A (zh) * | 2017-06-29 | 2017-12-08 | 北京三快在线科技有限公司 | 一种客户端页面加载时间的获取方法及装置,电子设备 |
CN107562610A (zh) * | 2017-09-21 | 2018-01-09 | 上海谦问万答吧云计算科技有限公司 | 获取页面加载时间的方法、装置、终端和介质 |
US20190364133A1 (en) * | 2018-05-14 | 2019-11-28 | Ucweb Singapore Pte. Ltd. | Display processing method and apparatus, and electronic terminal therefor |
CN110287441A (zh) * | 2019-06-27 | 2019-09-27 | 广州华多网络科技有限公司 | 页面加载时长的检测方法、装置、设备和存储介质 |
CN110717121A (zh) * | 2019-08-27 | 2020-01-21 | 北京奇艺世纪科技有限公司 | 一种页面首屏时间确定方法及装置 |
CN110825456A (zh) * | 2019-11-01 | 2020-02-21 | 北京博睿宏远数据科技股份有限公司 | 加载时间计算方法、装置、计算机设备及存储介质 |
CN111752817A (zh) * | 2020-06-30 | 2020-10-09 | 汉海信息技术(上海)有限公司 | 页面加载时长的确定方法、装置、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991749A (zh) * | 2023-09-28 | 2023-11-03 | 厦门她趣信息技术有限公司 | 一种视图渲染问题排查方法、系统、设备及存储介质 |
CN116991749B (zh) * | 2023-09-28 | 2024-01-16 | 厦门她趣信息技术有限公司 | 一种视图渲染问题排查方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111581558B (zh) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956424B2 (en) | Application recommending method and system, and server | |
CN108370341B (zh) | 资源配置方法、虚拟网络功能管理器和网元管理系统 | |
CN110138577B (zh) | 集群创建方法、第一服务器以及可读存储介质 | |
WO2021115054A1 (zh) | 调整集群系统内的节点配置的方法及服务器 | |
CN108664521B (zh) | 一种提供序列号的方法、装置、电子设备和可读存储介质 | |
CN110362598B (zh) | 数据查询的方法、装置、存储介质及电子设备 | |
CN112286723A (zh) | 机房容灾控制方法、终端及存储介质 | |
CN110781149A (zh) | 管理直播间信息的方法、装置、设备及存储介质 | |
CN111464351B (zh) | 一种智能家居设备配网方法、装置、终端设备及存储介质 | |
CN112306471A (zh) | 一种任务的调度方法和装置 | |
CN113760333A (zh) | 软件升级方法、装置、电子设备及计算机可读存储介质 | |
CN111683114A (zh) | 一种设备程序的升级方法、装置、终端设备和存储介质 | |
CN111581558A (zh) | 页面加载时长的确定方法、装置、设备及存储介质 | |
CN110113495A (zh) | App的远程控制方法、装置、电子设备及系统 | |
CN109388420A (zh) | 应用升级测试方法、装置、计算机设备及存储介质 | |
CN113452556A (zh) | 产品技能的配置方法、装置、存储介质及电子装置 | |
CN111131440B (zh) | 资源调度方法、装置和服务器 | |
CN106293814B (zh) | 升级方法及装置 | |
CN109495298B (zh) | 在OpenStack系统中管理节点的方法和装置 | |
CN116192759A (zh) | 数据传输量的调整方法、装置、电子设备及存储介质 | |
CN109871226B (zh) | 下载器的配置方法、装置、介质及电子设备 | |
CN113485864A (zh) | 异常检测、异常分析方法、装置、电子设备和存储介质 | |
CN108845845B (zh) | 一种快捷键创建方法、装置、电子设备及存储介质 | |
CN109271188A (zh) | 一种cpld升级方法及相关装置 | |
CN106126285A (zh) | 一种软件升级方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |