一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

页面加载时长确定方法、装置、电子设备及存储介质与流程

2022-08-13 11:33:45 来源:中国专利 TAG:
1.本公开涉及互联网
技术领域
:,尤其涉及一种页面加载时长确定方法、装置、电子设备及存储介质。
背景技术
::2.随着移动互联网技术的不断发展,移动应用程序通过向用户提供页面的方式承载业务服务。页面加载是指响应于页面显示指令,从服务器和/或本地存储空间中获取相应的页面数据,并根据页面数据进行渲染。页面的加载速度是衡量应用程序性能的重要指标,当页面加载速度较慢时,意味着较长的用户等待时间,不利用用户体验,影响业务的顺利开展。3.因此,如何确定页面的加载时长,以便于对加载速度较慢的页面进行及时地优化,提升用户体验,是本领域亟待解决的技术问题。技术实现要素:4.本公开提供一种页面加载时长确定方法、装置、电子设备及存储介质,可以更加准确地确定页面加载时长,确定出的页面加载时长更加符合用户对象所实际感知到的页面加载时长,以便于对加载速度较慢的页面进行及时地优化。5.本公开实施例的技术方案如下:6.根据本公开实施例的第一方面,提供一种页面加载时长确定方法,包括:获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到用户对象触发的页面跳转指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面跳转指令用于触发页面加载过程,以显示出页面。根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。7.可选的,页面加载过程包括预先划分的多个阶段,页面加载时长确定方法还包括:获取每个阶段的起始时刻和/或终止时刻;根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长。通过将页面加载过程预先划分为多个对应不同操作的阶段,并获取每个阶段的起始时刻和终止时刻,可以以更细粒度确定页面加载过程中,每一阶段对应的加载时长,实现对加载时长的精确监控,以便于对加载速度较慢的页面进行及时地优化。8.可选的,多个阶段包括页面初始化阶段、网络请求阶段和页面渲染阶段,页面初始化阶段包括用于对页面的基础界面信息进行初始化的一个或者多个操作,网络请求阶段包括用于从服务器获取页面的页面数据的操作,页面渲染阶段包括用于根据页面数据对页面上的视图进行渲染的一个或者多个操作。9.可选的,在获取到任意相邻两个阶段中每个阶段的起始时刻的情况下,根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长,包括:将第二阶段的起始时刻作为第一阶段的终止时刻,第一阶段与第二阶段相邻且早于第二阶段。根据第一阶段的起始时刻和第一阶段的终止时刻,确定第一阶段的时长。提供了一种确定在页面加载过程中的每个阶段所需的时长的具体实现方式,通过获取相邻阶段的起始时刻,即可确定相邻的两个阶段中,时序在前的阶段的时长。避免获取每个阶段对应的起始时刻和终止时刻,能够提升处理效率,节约系统资源。10.可选的,在获取到任意相邻两个阶段中每个阶段的终止时刻的情况下,根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长,包括:将第一阶段的终止时刻作为第二阶段的起始时刻,第一阶段与第二阶段相邻且早于第二阶段。根据第二阶段的起始时刻和第二阶段的终止时刻,确定第二阶段的时长。提供了一种确定在页面加载过程中的每个阶段所需的时长的具体实现方式,通过获取相邻阶段的终止时刻,即可确定相邻的两个阶段中,时序在后的阶段的时长。避免获取每个阶段对应的起始时刻和终止时刻,能够提升处理效率,节约系统资源。11.可选的,获取每个阶段的起始时刻和/或终止时刻,包括:获取上述阶段对应的函数被调用的时刻,将阶段对应的函数被调用的时刻作为阶段的起始时刻;阶段对应的函数用于执行阶段内的操作。通过将每个阶段对应的函数被调用的时刻作为每个阶段的起始时刻,能够对每个阶段的起始时刻进行准确确定。以便于确定页面加载过程中的每个阶段的时长。12.可选的,获取每个阶段的起始时刻和/或终止时刻,包括:获取阶段对应的线程的状态变化信息,状态变化信息包括线程的状态发生变化的时刻,阶段对应的线程用于执行阶段内的操作,线程至少包括页面显示线程。将线程的状态由工作状态变更为空闲状态的时刻,作为阶段的终止时刻。通过获取每个阶段对应的线程的状态变化信息,即可对当前阶段完成的终止时刻进行准确确定,以便于确定出页面加载过程中的每个阶段的时长。13.可选的,方法还包括:在页面加载过程中,利用预设函数监听页面加载过程相关的事件,页面加载过程相关的事件包括接收到页面跳转指令的事件、线程的状态变化事件以及调用函数的事件,以获得接收到页面跳转指令的时刻、线程的状态变化的时刻以及函数被调用的时刻;其中,预设函数用于获取归属于任意应用程序的任意页面的页面加载过程相关的事件。14.根据本公开实施例的第二方面,提供一种页面加载时长确定装置,包括时刻获取单元和时长确定单元,时刻获取单元,被配置为执行获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到页面显示指令的时刻,终止时刻为页面上任一视图均显示完成的时刻,页面显示指令用于触发页面加载过程,以显示出页面。时长确定单元,被配置为执行根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。15.可选的,页面加载过程包括预先划分的多个阶段,时刻获取单元,被配置为执行获取每个阶段的起始时刻和/或终止时刻;时长确定单元,被配置为执行根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长。16.可选的,多个阶段包括页面初始化阶段、网络请求阶段和页面渲染阶段,页面初始化阶段包括用于对页面的基础界面信息进行初始化的一个或者多个操作,网络请求阶段包括用于从服务器获取页面的页面数据的操作,页面渲染阶段包括用于根据页面数据对页面上的视图进行渲染的一个或者多个操作。17.可选的,时长确定单元,具体被配置为执行将第二阶段的起始时刻作为第一阶段的终止时刻,第一阶段与第二阶段相邻且早于第二阶段;根据第一阶段的起始时刻和第一阶段的终止时刻,确定第一阶段的时长。18.可选的,时长确定单元,具体被配置为执行将第一阶段的终止时刻作为第二阶段的起始时刻,第一阶段与第二阶段相邻且早于第二阶段;根据第二阶段的起始时刻和第二阶段的终止时刻,确定第二阶段的时长。19.可选的,时刻获取单元,具体被配置为执行获取阶段对应的函数被调用的时刻,将阶段对应的函数被调用的时刻作为阶段的起始时刻;阶段对应的函数用于执行阶段内的操作。20.可选的,时刻获取单元,具体被配置为执行获取阶段对应的线程的状态变化信息,状态变化信息包括线程的状态发生变化的时刻,阶段对应的线程用于执行阶段内的操作,线程至少包括页面显示线程;将线程的状态由工作状态变更为空闲状态的时刻,作为阶段的终止时刻。21.可选的,时刻获取单元,还被配置为执行:在页面加载过程中,利用预设函数监听页面加载过程相关的事件,页面加载过程相关的事件包括接收到页面跳转指令的事件、线程的状态变化事件以及调用函数的事件,以获得接收到页面跳转指令的时刻、线程的状态变化的时刻以及函数被调用的时刻;其中,预设函数用于获取归属于任意应用程序的任意页面的页面加载过程相关的事件。22.根据本公开实施例的第三方面,提供一种电子设备,可以包括:处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面中任一种可选地页面加载时长确定方法。23.根据本公开实施例的第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述第一方面中任一种可选地页面加载时长确定方法。24.根据本公开实施例的第五方面,提供一种计算机程序产品,当计算机程序/指令在被处理器执行时实现如第一方面中任一种可选地实现方式的页面加载时长确定方法。25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。26.本公开的实施例提供的技术方案至少带来以下有益效果:27.基于本公开的上述任一方面,提供一种页面加载时长确定方法,包括:获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到页面显示指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面显示指令用于触发页面加载过程,以显示出页面;根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。由于用户对象所感知到的页面加载过程是从其输入页面显示指令(例如点击操作)到显示出包含所有视图的完整页面,因此本公开以接收到页面显示指令的时刻作为页面加载过程的起始时刻,以页面显示线程对页面上视图渲染完成后进入空闲状态的时刻作为页面加载过程的终止时刻,根据这样的起始时刻和终止时刻确定出的页面加载时长,更加符合用户对象所实际感知到的页面加载时长,即确定出的页面加载时长更加准确,进而有利于甄别出加载速度较慢的页面,便于对加载速度较慢的页面进行及时地优化。附图说明28.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。29.图1示出了本公开实施例提供的一种页面加载过程的示意图;30.图2示出了本公开实施例提供的一种通信系统的结构示意图;31.图3示出了本公开实施例提供的一种页面加载时长确定方法的流程示意图;32.图4示出了本公开实施例提供的一种页面加载过程的阶段示意图;33.图5示出了本公开实施例提供的一种页面加载时长确定方法的流程示意图;34.图6示出了本公开实施例提供的另一种页面加载过程的阶段示意图;35.图7示出了本公开实施例提供的一种页面显示变化的过程示意图;36.图8示出了本公开实施例提供的一种页面加载时长确定方法的流程示意图;37.图9示出了本公开实施例提供的一种页面加载时长确定方法的流程示意图;38.图10示出了本公开实施例提供的一种页面加载时长确定装置的结构示意图;39.图11示出了本公开实施例提供的一种电子设备的结构示意图。具体实施方式40.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。41.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。42.还应当理解的是,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素和/或组件的存在或添加。43.需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息、用户行为信息等)和数据(包括但不限于动态页面对应的页面数据等),均为经用户授权或者经过各方充分授权的数据。44.随着移动互联网技术的不断发展,移动应用程序通过向用户提供页面的方式承载业务服务。页面加载是指响应于页面显示指令,从服务器和/或本地存储空间中获取相应的页面数据,并根据页面数据进行渲染。页面的加载速度是衡量应用程序性能的重要指标,当页面加载速度较慢时,意味着较长的用户等待时间,不利用用户体验,影响业务的顺利开展。45.因此,如何确定页面的加载时长,以便于对加载速度较慢的页面进行及时地优化,提升用户体验,是本领域亟待解决的技术问题。46.视图选择控制器(viewcontroller)用于管理页面内部各个视图的加载显示和卸载,同时负责与其他视图选择控制器的通信和协调。在ios的系统架构中,有两类viewcontroller,一类是显示内容的,比如uiviewcontroller、uitableviewcontroller等;另一类是viewcontroller容器(又称为页面容器),如uinavigationviewcontroller和uitabbarcontroller等。在ios操作系统的开发过程中,viewcontroller容器具有自身的生命周期(lifecycle)。相关技术中,一般以viewcontroller容器的初始化的方法被调用,作为页面加载过程的起始点,以viewcontroller容器的生命周期的终点,作为页面加载过程的结束点。前述起始点和结束点之间的时间段即为页面加载时长。图1为ios操作系统中页面加载过程的示意图,如图1所示,其是以viewcontroller容器的init方法,即页面容器的初始化作为页面加载过程的起始点,以基础页面显示完成作为页面加载过程的结束点。其中,显示出的基础页面中并未包含页面所应包含的所有视图。47.然而,上述确定页面加载时长的方式,无法确定出用户对象所实际感知到的页面加载时长,即确定出的页面加载时长不够准确,进而不利于甄别加载速度较慢的页面,不便于优化页面。48.基于此,本公开实施例提供了一种页面加载时长确定方法,包括:获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到用户对象触发的页面跳转指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面跳转指令用于触发页面加载过程,以显示出页面。根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。由于用户对象所感知到的页面加载过程是从其输入页面显示指令(例如点击操作)到显示出包含所有视图的完整页面,因此本公开以接收到页面显示指令的时刻作为页面加载过程的起始时刻,以页面显示线程对页面上视图渲染完成后进入空闲状态的时刻作为页面加载过程的终止时刻,根据这样的起始时刻和终止时刻确定出的页面加载时长,更加符合用户对象所实际感知到的页面加载时长,即确定出的页面加载时长更加准确,进而有利于甄别出加载速度较慢的页面,便于对加载速度较慢的页面进行及时地优化。49.可以这样理解,页面中通常包括多个视图,如视频、图片、文字和控件等,电子设备显示页面的过程包括渲染及显示该多个视图,以显示出完整的页面。基于此,上述“页面显示线程对页面上视图渲染完成后进入空闲状态的时刻”是指,页面中所有视图均显示完成的时刻,也即,页面中最后一个未被显示出的视图被显示出来,且可交互的时刻。50.以下对本公开实施例提供的页面加载时长确定方法的应用场景进行示例性说明:51.图2为本公开实施例提供的一种通信系统示意图,如图2所示,该通信系统中可以包括:服务器110和终端设备120。服务器110可以通过有线网络或无线网络与终端设备120之间建立连接。52.其中,服务器110,可以用于接收来自终端设备120的页面数据获取请求,返回页面对应的页面数据。其中,页面包括至少一个视图,视图可以为视频、图片、文字或控件中的一种或多种。视图包括可交互视图和不可交互视图,可交互视图能够响应于用户对象的操作,实现用户对象与终端设备之间的交互。53.一些实施例中,服务器110可以是单独的一个服务器,或者,也可以是由多个服务器(或者微服务器)构成的服务器集群。服务器集群还可以是分布式集群。本公开对服务器110的具体实现方式也不作限制。54.终端设备120,可以用于响应于用户对象输入的页面显示指令,向服务器发送页面数据获取请求,接收服务器返回的页面对应的页面数据,基于该页面的页面数据进行渲染和显示。55.终端设备120,还可以用于获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到页面显示指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面显示指令用于触发页面加载过程,以显示出页面。以及,根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。56.一些实施例中,终端设备可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本,以及蜂窝电话、个人数字助理(personaldigitalassistant,pda)、增强现实(augmentedreality,ar)\虚拟现实(virtualreality,vr)设备等可以安装并使用各类应用程序(如浏览器、快手)的设备,本公开对该终端的具体形态不做特殊限制。其可以与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互。57.可选地,上述图2所示的通信系统中服务器110可以与至少一个终端设备120连接。本公开对终端设备120的数量及类型均不作限制。58.本公开实施例提供的页面加载时长确定方法可以应用于前述图2所示的终端设备120,也可以应用于其他电子设备。59.在一些实施例中,本公开提供的页面加载时长确定方法的执行主体可以为页面加载时长确定装置,页面加载时长确定装置可以内置在电子设备中,如内置在上述终端设备120中。60.图3为本公开实施例提供的一种页面加载时长确定方法的流程图,如图3所示,当页面加载时长确定方法应用于终端设备时,该页面加载时长确定方法可以包括:61.s301、获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到用户对象触发的页面跳转指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面跳转指令用于触发页面加载过程,以显示出页面。62.上述页面可以是终端设备上的任意的页面,例如应用程序(application,app)的页面,比如浏览器、社交应用、直播应用等应用程序的页面。63.在一些实现方式中,在页面加载过程中,利用预设函数监听页面加载过程相关的事件,页面加载过程相关的事件包括接收到页面跳转指令的事件、页面显示线程的状态变化事件,以获得接收到页面跳转指令的时刻(即上述起始时刻)、页面显示线程在对页面上视图渲染完成后进入空闲状态的时刻。在另外的实施例中,上述预设函数监听的与页面加载过程相关的事件还包括页面加载过程的某个阶段的函数被调用的事件、某个阶段的线程的状态变化事件以及特定的应用程序编程接口被调用的事件等,详见下述实施例。64.值得注意的是,上述预设函数用于获取归属于任意应用程序的任意页面的页面加载过程相关的事件。65.在一种实现方式中,上述预设函数可以是挂钩(hook)函数。即,通过挂钩(hook)对用户对象输入页面显示指令的事件,以及页面上所有视图均显示完成的事件进行监听,以获取到页面加载过程的起始时刻和终止时刻。当应用程序通过hook,在第一时刻监听到用户在终端设备的界面输入针对某个目标页面的页面显示指令时,应用程序记录该第一时刻,以将该第一时刻作为页面加载过程的起始时刻。当应用程序通过hook,在第二时刻监听到页面上所有视图均显示完成时,应用程序记录该第二时刻,以将该第二时刻作为页面加载过程的终止时刻。66.其中,挂钩(hook)为操作系统中提供的一种机制,在对特定的系统事件进行hook后,一旦发生已进行hook的系统事件,对该系统事件进行hook的应用程序就会收到系统的通知。67.在本公开中,应用程序通过hook,对界面窗口(uiwidow)中的发送事件(sendevent)进行监听,当用户点击界面窗口输入页面显示指令时,应用程序会收到系统发送的相应通知,进而获取到接收到页面显示指令的时刻,即获取到页面加载过程的起始时刻,保存在内存中。68.在一些实施例中,当用户对象在预设时间范围内多次输入针对同一页面的页面显示指令时,将最后一次输入的页面显示指令的时刻作为起始时刻。69.本公开中,应用程序通过hook,获取页面显示线程对应的状态变化信息,该页面显示线程用于执行显示该页面,该状态变化信息包括该页面显示线程的状态发生变化的时刻。70.值得注意的是,显示出的页面内容包括两部分,其一为基础页面内容,其二为有效视图内容。其中,基础页面内容是指,应用程序将从服务器获取到的一部分页面数据,渲染得到的包含基础界面信息的页面中,基础页面内容不包括有效视图内容。当应用程序将有效视图内容渲染在基础页面内容上后,页面显示完成。基于此,在页面显示时,页面显示线程会先完成对基础页面内容的显示,此时页面中的有效视图并未加载完成,用户无法对页面的视图进行操作。在页面显示线程完成对基础页面内容的显示后,会根据从服务器获取到的另一部分页面数据渲染页面中的有效视图,直到显示出所有的视图。由于页面显示线程在完成所有视图的显示后,会由工作状态变为空闲状态,因此本公开中,应用程序通过hook,获取页面显示线程完成所有视图显示后的第一个空闲状态的时刻,作为页面加载过程的终止时刻。71.示例的,应用程序记录的上述起始时刻和终止时刻具体可以为64位的时间戳信息。72.由于本公开是通过在底层类中通过hook的方式获取到页面加载过程的起始时刻和终止时刻,故而实现该过程中的代码不与页面代码耦合,即不与业务代码耦合,因此不受业务迭代的影响。73.s302、根据页面加载过程的起始时刻和终止时刻,确定页面加载时长。74.示例性的,页面a的页面加载过程的起始时刻为2022年1月1日17时0分0秒,页面a的页面加载过程的终止时刻为2022年1月1日17时0分5秒,则页面a的页面加载时长为5秒。75.由s301-s302可知,本公开以接收到页面显示指令的时刻作为页面加载过程的起始时刻,以页面显示线程对页面上视图渲染完成后进入空闲状态的时刻作为页面加载过程的终止时刻,根据这样的起始时刻和终止时刻确定出的页面加载时长,更加符合用户对象所实际感知到的页面加载时长,即确定出的页面加载时长更加准确,进而有利于甄别出加载速度较慢的页面,便于对加载速度较慢的页面进行及时地优化。76.容易理解的是,页面加载过程通常包括多个操作,不同操作在不同阶段执行。考虑到不同操作的耗时不同,即不同阶段对页面加载时长的贡献度不同,因而获得每个阶段的耗时,即可确定出对页面加载速度影响较大的阶段/操作,进而有利于明确对页面的优化方向。77.基于此,在一些实施例中,页面加载过程包括预先划分的多个阶段,在不同的阶段执行页面加载过程所包括的不同操作,上述页面加载时长确定方法还包括:获取每个阶段的起始时刻和/或终止时刻,根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长。78.图4为本公开实施例提供的一种页面加载过程的阶段示意图,该页面加载过程主要包括如下几个阶段:79.(1)viewcontroller容器初始化阶段;当终端设备接收到用户输入的页面显示指令后,执行viewcontroller容器初始化。80.(2)本地ui初始化阶段;本地ui初始化发生在容器初始化完成后,指不依赖网络数据、仅依赖本地数据的、由页面显示线程执行的、对页面的基础界面信息进行的初始化。当本地ui初始化完成时,该页面显示线程由工作状态变更为空闲状态。81.在一些实施例中,将上述viewcontroller容器初始化阶段和本地ui初始化阶段划分到同一个阶段中,该阶段可称为页面初始化阶段。该页面初始化阶段包括用于对页面的基础界面信息进行初始化的一个或者多个操作。82.(3)网络请求阶段;在完成上述本地ui初始化阶段后,应用程序调用应用程序编程接口向服务器发送页面数据获取请求,服务器根据该请求返回页面对应的数据;接着,应用程序通过回调应用程序编程接口接收该页面数据。网络请求阶段包括用于从服务器获取页面的页面数据的操作,83.(4)基础页面渲染阶段,是指页面显示线程根据该页面数据中的一部分对页面的基础界面进行渲染,当该页面的基础界面渲染完成时,显示出基础页面,该基础页面不包括有效视图。84.(5)页面视图渲染阶段,是指页面显示线程根据该页面数据的另一部分对页面的有效视图内容进行渲染,当该页面的视图渲染完成时,在页面上显示对应的视图,此时该页面显示线程再次由工作状态变更为空闲状态,表示页面加载已经完成。用户可以与页面中的视图进行交互。85.在一些实施例中,将上述基础页面渲染阶段和页面视图渲染阶段划分到同一个阶段中,该阶段可称为页面渲染阶段。页面渲染阶段包括用于根据页面数据对页面上的视图进行渲染的一个或者多个操作。86.需要说明的是,上述图4示出的对页面加载过程的划分方式不构成对本公开技术方案的限定,换句话说,基于本公开实施例的构思,还可以将相同的页面加载过程划分成更多的阶段或者更少的阶段。应理解的是,不同操作系统和/或业务页面所对应的页面加载过程可以相同,也可以不同。针对不同的页面加载过程,所划分出的阶段自然不同。87.在一些实现方式中,图5示出了本公开实施例提供的一种页面显示变化的过程示意图,参见图5,在接收到用户对象触发的对页面a的页面跳转指令之后,执行viewcontroller容器初始化和本地ui初始化。在本地ui初始化完成后,此时在终端设备上显示空白页面,空白页面上并未展示页面a对应的内容,然后从服务器获取页面a对应的数据,当页面a对应的数据获取完成,根据该页面数据中的一部分对页面的基础界面进行渲染,当该页面的基础界面渲染完成时,显示出页面a的基础页面,该基础页面包括四个视图展示区域501,分别用于展示不同的视图,在显示出基础页面之后,根据该页面数据的另一部分对页面的有效视图内容进行渲染,当该页面a对应的视图渲染完成时,显示加载完成的页面a,即页面a的视图页面,该页面上包括视图502、视图503、视图504和视图505,此时该页面显示线程再次由工作状态变更为空闲状态,表示页面加载已经完成。88.由上述可知,通过将页面加载过程预先划分为多个对应不同操作的阶段,并获取每个阶段的起始时刻和终止时刻,可以以更细粒度确定页面加载过程中,每一阶段对应的加载时长,实现对加载时长的精确监控,以便于对加载速度较慢的页面进行及时地优化。89.在一些实施例中,参见图6,在获取到任意相邻两个阶段中每个阶段的起始时刻的情况下,根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长,包括:90.s601、将第二阶段的起始时刻作为第一阶段的终止时刻,第一阶段与第二阶段相邻且早于第二阶段。91.s602、根据第一阶段的起始时刻和第一阶段的终止时刻,确定第一阶段的时长。92.具体的,在页面加载过程中,由于第一阶段和第二阶段为相邻的两个阶段,且第一阶段早于第二阶段,因此,第二阶段的起始时刻即为第一阶段的终止时刻。根据第一阶段的起始时刻和终止时刻即可确定第一阶段的时长。由s601-s602可知,提供了一种确定在页面加载过程中的每个阶段所需的时长的具体实现方式,通过获取相邻阶段的起始时刻,即可确定相邻的两个阶段中,时序在前的阶段的时长。避免获取每个阶段对应的起始时刻和终止时刻,能够提升处理效率,节约系统资源。93.容易理解的是,页面加载过程的一个或者多个阶段中的一个或者多个操作,包括调用相应的功能函数,或者说,前述一个或者多个操作是通过调用相应的功能函数来实现的。以容器初始化阶段和本地ui初始化阶段为例,需要首先调用容器初始化函数,通过该函数执行页面容器初始化。当页面容器初始化完成时,再调用本地ui初始化函数,通过该函数执行本地ui初始化。其中,容器初始化对应的函数为界面视图选择控制器(uiviewcontroller)的(instancetype)init函数。本地ui初始化对应的函数为界面视图选择控制器(uiviewcontroller)中的(void)viewdidload函数。94.基于此,在一些实施例中,获取每个阶段的起始时刻和/或终止时刻,包括:获取阶段对应的函数被调用的时刻,将阶段对应的函数被调用的时刻作为阶段的起始时刻;阶段对应的函数用于执行被划分在阶段执行的操作。95.在一些实现方式中,可以通过挂钩(hook)对特定阶段对应的函数是否被调用进行监听。96.图7为本公开实施例提供的另一种页面加载过程的阶段示意图,参见图7,继续以上述容器初始化阶段和本地ui初始化阶段为例,当应用程序通过hook,在第三时刻监听到容器初始化方法被调用时,将第三时刻确定为容器初始化阶段的起始时刻;当第四时刻监听到本地ui初始化方法被调用时,将第四时刻确定为本地ui初始化阶段的起始时刻,根据第三时刻和第四时刻即可确定容器初始化阶段的时长。97.由上述可知,通过将某个阶段对应的函数被调用的时刻作为该阶段的起始时刻,能够对每个阶段的起始时刻进行准确确定,以便于确定页面加载过程中的每个阶段的时长。98.容易理解的是,页面加载过程的一个或者多个阶段中的一个或者多个操作,是通过某个工作线程来完成的,例如工作线程调用相应的功能函数,并执行该功能函数。并且,工作线程在执行操作时,处于工作状态,在执行操作完成后,进入空闲状态。以容器初始化阶段和本地ui初始化阶段为例,通过页面显示线程调用并执行容器初始化函数和本地ui初始化函数,其在完成页面初始化后,进入到空闲状态。99.基于此,在一些实施例中,获取每个阶段的起始时刻和/或终止时刻,包括:获取阶段对应的线程的状态变化信息,状态变化信息包括线程的状态发生变化的时刻,阶段对应的线程用于执行被划分在阶段执行的操作。将线程的状态由工作状态变更为空闲状态的时刻,作为阶段的终止时刻。100.在一些实现方式中,可以通过挂钩(hook)对特定阶段对应的线程的状态变化情况进行监听。101.参阅图7,继续以上述容器初始化阶段和本地ui初始化阶段为例,当应用程序通过hook,在第四时刻监听到本地ui初始化方法被调用时,将第四时刻确定为本地ui初始化阶段的起始时刻;接着,在未显示基础页面的情况下,应用程序通过hook获取页面显示线程的状态变化信息,当获取到在第五时刻页面显示线程的状态由工作状态变更为空闲状态时,将第五时刻作为本地ui初始化阶段的终止时刻。根据第四时刻和第五时刻可以确定完成本地ui初始化阶段的时长。102.示例性的,示例性的,页面a的本地ui初始化对应的函数被调用的时刻为2022年1月1日17时0分0秒,在未显示页面的情况下,页面a的线程的状态由工作状态变更为空闲状态的时刻为2022年1月1日17时0分3秒,则页面a的页面初始化阶段的时长为3秒。103.由上述可知,通过获取本地ui初始化函数被调用的时刻和本地ui初始化完成的时刻,可以确定本地ui初始化阶段的起始时刻和终止时刻,并进一步确定出本地ui初始化阶段的时长。如果该时长过长,则可以对本地ui初始化的阶段进行精准优化,提升用户体验。104.由上述可知,通过获取某个阶段对应的线程的状态变化信息,可以对该阶段完成的终止时刻进行准确确定,以便于确定出页面加载过程中的每个阶段的时长。105.在一些实施例中,参见图8,在网络请求阶段,本公开页面加载时长确定方法,还包括以下步骤:106.s801、当第六时刻应用程序编程接口被调用时,将第六时刻确定为网络请求阶段的起始时刻;107.s802、当第七时刻应用程序编程接口被回调时,将第七时刻确定为网络请求阶段的终止时刻;108.s803、根据网络请求阶段的起始时刻和终止时刻确定网络请求阶段的时长。109.在上述实施例中,由于应用程序编程接口用于向服务器请求该页面对应的数据,因此将应用程序编程接口被调用的时刻作为网络请求阶段的起始时刻。当应用程序编程接口被回调时,说明此时应用程序对页面数据获取完成,因此将应用程序编程接口被回调的时刻作为网络请求阶段的终止时刻,根据该起始时刻和终止时刻确定获取页面对应的数据的时长。110.示例性的,页面a的应用程序编程接口被调用的时刻为2022年1月1日17时0分0秒,页面a的应用程序编程接口被回调的时刻为2022年1月1日17时0分3秒,则页面a的网络请求阶段的时长为3秒。111.由上述可知,通过获取应用程序编程接口被调用和回调的时刻,可以确定网络请求阶段的起始时刻和终止时刻,并进一步确定出网络请求阶段的时长。如果该时长过长,可以对网络请求阶段进行精准优化,提升用户体验。112.在网络请求阶段中,当终端设备向服务器发送页面数据获取请求后,服务器根据该请求确定对应的页面数据,并将该页面数据返回给终端设备。因此,将终端设备发送请求的时刻确定为服务器返回页面对应的数据消耗时长的起始时刻,将终端设备接收到服务器返回的页面对应的数据的时刻作为终止时刻,根据该起始时刻和终止时刻确定服务器返回页面对应的数据消耗时长。113.在一些实施例中,参见图9,还可以通过下述步骤确定出服务器返回页面数据的耗时:114.s901、当终端设备在第八时刻向服务器发送页面数据获取请求时,将第八时刻确定为服务器返回页面数据消耗时长的起始时刻;115.s902、当终端设备在第九时刻接收到服务器返回的页面数据时,将第九时刻确定为服务器返回页面数据消耗时长的终止时刻;116.s903、根据服务器返回页面数据消耗时长的起始时刻和终止时刻确定服务器返回页面数据消耗时长。117.示例性的,终端设备发送请求页面a对应的数据的时刻为2022年1月1日17时0分3秒,终端设备接收服务器返回的页面a对应的数据的时刻为2022年1月1日17时0分4秒,则服务器返回页面a对应的数据消耗时长为1秒。118.由上述可知,通过获取终端设备发送请求和接收数据的时刻,可以确定服务器返回页面数据消耗时长的起始时刻和终止时刻,并进一步确定出服务器返回页面数据的消耗时长。如果该时长过长,可以对服务器进行精准优化,提升用户体验。119.在一些实施例中,在获取到任意相邻两个阶段中每个阶段的终止时刻的情况下,根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长,包括:将第一阶段的终止时刻作为第二阶段的起始时刻,第一阶段与第二阶段相邻且早于第二阶段,根据第二阶段的起始时刻和第二阶段的终止时刻,确定第二阶段的时长。120.具体的,在页面加载过程中,由于第一阶段和第二阶段为相邻的两个阶段,且第一阶段早于第二阶段,因此,第一阶段的终止时刻即为第二阶段的起始时刻。根据第二阶段的起始时刻和终止时刻即可确定第一阶段的时长。121.由上述可知,提供了一种确定在页面加载过程中的每个阶段所需的时长的具体实现方式,通过获取相邻阶段的终止时刻,即可确定相邻的两个阶段中,时序在后的阶段的时长。避免获取每个阶段对应的起始时刻和终止时刻,能够提升处理效率,节约系统资源。122.参阅图6,在一些实施例中,针对基础页面渲染阶段,页面加载时长确定方法,还包括:当第七时刻接收到服务器返回的页面数据时,将第七时刻确定为基础页面渲染阶段的起始时刻;当第十时刻对页面基础页面渲染完成时,将第十时刻确定为基础页面渲染阶段的终止时刻;根据基础页面渲染阶段的起始时刻和终止时刻确定基础页面渲染阶段的时长。123.在上述实施例中,当终端设备获取到服务器返回的页面数据页面显示线程会首先根据页面数据的一部分对基础页面内容进行渲染。因此,将终端设备获取到页面对应的数据的时刻确定为渲染页面的界面的起始时刻,将显示出基础页面的时刻确定为终止时刻,根据该起始时刻和终止时刻确定基础页面渲染阶段的界面的时长。124.示例性的,终端设备接收服务器返回的页面a对应的数据的时刻为2022年1月1日17时0分4秒,显示基础页面的时刻为2022年1月1日17时0分5秒,则页面a的基础页面渲染阶段的时长为1秒。125.由上述可知,通过获取终端设备接收数据的时刻和显示出基础页面的时刻,可以确定基础页面渲染阶段的起始时刻和终止时刻,并进一步确定基础页面渲染阶段的时长。如果该时长过长,可以对基础页面渲染阶段进行精准优化,提升用户体验。126.在一些实施例中,在页面视图渲染阶段,页面加载时长确定方法,还包括:当第十时刻对基础页面渲染完成时,将第十时刻确定为页面视图渲染阶段的起始时刻;当第十一时刻对页面中有效视图渲染完成比例超过预设比例时,将第十一时刻确定为页面视图渲染阶段的终止时刻;根据页面视图渲染阶段的起始时刻和终止时刻确定页面视图渲染阶段的时长。127.在上述实施例中,当显示出基础页面后,页面显示线程继续根据有效视图数据渲染该页面的视图。因此,将显示出基础页面的时刻确定为页面视图渲染阶段的起始时刻,将页面中预设比例的视图渲染完成的时刻作为页面视图渲染阶段的终止时刻,根据该起始时刻和终止时刻确定页面视图渲染阶段的时长。128.示例性的,显示出基础页面的时刻为的2022年1月1日17时0分4秒,显示该页面上预设比例的视图的时刻为2022年1月1日17时0分6秒,则页面a的页面视图渲染阶段的时长为2秒。129.可以理解的,在实际实施时,本公开实施例的终端/服务器可以包含有用于实现前述对应页面加载时长确定方法的一个或多个硬件结构和/或软件模块,这些执行硬件结构和/或软件模块可以构成一个电子设备。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。130.基于这样的理解,本公开实施例还对应提供一种页面加载时长确定装置,可以应用于电子设备。131.图10示出了本公开实施例提供的页面加载时长确定装置的结构示意图。如图10所示,该页面加载时长确定装置可以包括:时刻获取单元1001和时长确定单元1002,时刻获取单元1001,被配置为执行获取页面加载过程的起始时刻和终止时刻,起始时刻为接收到用户对象触发的页面跳转指令的时刻,终止时刻为页面显示线程对页面上视图渲染完成后进入空闲状态的时刻,页面跳转指令用于触发页面加载过程,以显示出页面,用于执行上述方法中的步骤s301。时长确定单元1002,被配置为执行根据页面加载过程的起始时刻和终止时刻,确定页面加载时长,用于执行上述方法中的步骤s302。132.可选的,页面加载过程包括预先划分的多个阶段,时刻获取单元1001,被配置为执行获取每个阶段的起始时刻和/或终止时刻;时长确定单元1002,被配置为执行根据每个阶段的起始时刻和/或终止时刻,确定每个阶段的时长。133.可选的,多个阶段包括页面初始化阶段、网络请求阶段和页面渲染阶段,页面初始化阶段包括用于对页面的基础界面信息进行初始化的一个或者多个操作,网络请求阶段包括用于从服务器获取页面的页面数据的操作,页面渲染阶段包括用于根据页面数据对页面上的视图进行渲染的一个或者多个操作。134.可选的,时长确定单元1002,具体被配置为执行将第二阶段的起始时刻作为第一阶段的终止时刻,第一阶段与第二阶段相邻且早于第二阶段;根据第一阶段的起始时刻和第一阶段的终止时刻,确定第一阶段的时长。135.可选的,时长确定单元1002,具体被配置为执行将第一阶段的终止时刻作为第二阶段的起始时刻,第一阶段与第二阶段相邻且早于第二阶段;根据第二阶段的起始时刻和第二阶段的终止时刻,确定第二阶段的时长。136.可选的,时刻获取单元1001,具体被配置为执行获取阶段对应的函数被调用的时刻,将阶段对应的函数被调用的时刻作为阶段的起始时刻;阶段对应的函数用于执行阶段内的操作。137.可选的,时刻获取单元1001,具体被配置为执行获取阶段对应的线程的状态变化信息,状态变化信息包括线程的状态发生变化的时刻,阶段对应的线程用于执行阶段内的操作,线程至少包括页面显示线程;将线程的状态由工作状态变更为空闲状态的时刻,作为阶段的终止时刻。138.可选的,时刻获取单元1001,还被配置为执行:在页面加载过程中,利用预设函数监听页面加载过程相关的事件,页面加载过程相关的事件包括接收到页面跳转指令的事件、线程的状态变化事件以及调用函数的事件,以获得接收到页面跳转指令的时刻、线程的状态变化的时刻以及函数被调用的时刻;其中,预设函数用于获取归属于任意应用程序的任意页面的页面加载过程相关的事件。139.如上,本公开实施例可以根据上述方法示例对电子设备进行功能模块的划分。其中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,还需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。140.关于上述实施例中的页面加载时长确定装置,其中各个模块执行操作的具体方式、以及具备的有益效果,均已经在前述方法实施例中进行了详细描述,此处不再赘述。141.本公开实施例还提供一种电子设备。图11示出了本公开实施例提供的电子设备的结构示意图。该电子设备可以是页面加载时长确定装置可以包括至少一个处理器1101,通信总线1102,存储器1103以及至少一个通信接口1104。142.处理器1101可以是一个处理器(centralprocessingunits,cpu),微处理单元,asic,或一个或多个用于控制本公开方案程序执行的集成电路。作为一个示例,结合图10,电子设备中的时刻获取单元1001和时长确定单元1002实现的功能与图11中的处理器1101实现的功能相同。143.通信总线1102可包括一通路,在上述组件之间传送信息。144.通信接口1104,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如服务器、以太网,无线接入网(radioaccessnetwork,ran),无线局域网(wirelesslocalareanetworks,wlan)等。作为一个示例,145.存储器1103可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。146.其中,存储器1103用于存储执行本公开方案的应用程序代码,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的应用程序代码,从而实现本公开方法中的功能。147.在具体实现中,作为一种实施例,处理器1101可以包括一个或多个cpu,例如图11中的cpu0和cpu1。148.在具体实现中,作为一种实施例,电子设备可以包括多个处理器,例如图11中的处理器1101和处理器1105。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。149.在具体实现中,作为一种实施例,电子设备还可以包括输入设备1106和输出设备1107。输入设备1106和输出设备1107通信,可以以多种方式接受用户的输入。例如,输入设备1106可以是鼠标、键盘、触摸屏设备或传感设备等。输出设备1107和处理器1101通信,可以以多种方式来显示信息。例如,输出设备1101可以是液晶显示器(liquidcrystaldisplay,lcd),发光二极管(lightemittingdiode,led)显示设备等。150.本领域技术人员可以理解,图11中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。151.本公开实施例还提供一种电子设备。该电子设备可以是页面加载时长确定装置。该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器和一个或一个以上的存储器。其中,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的页面加载时长确定方法。当然,该电子设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该电子设备还可以包括其他用于实现设备功能的部件,在此不做赘述。152.本公开还提供了一种包括指令的计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由计算机设备的处理器执行时,使得计算机能够执行上述所示实施例提供的页面加载时长确定方法。例如,计算机可读存储介质可以为包括指令的存储器1103,上述指令可由终端的处理器1101执行以完成上述方法。又例如,计算机可读存储介质可以为包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述方法。可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是rom、ram、cd-rom、磁带、软盘和光数据存储设备等。153.本公开还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述页面加载时长确定方法。154.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。155.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献