一种页面资源预加载的处理方法及装置,电子和存储设备
技术领域
本申请涉及计算机应用领域,具体涉及一种页面资源预加载的处理方法及装置,以及电子设备和存储设备。
背景技术
目前不同国家地区的网络质量差异较大,即使通过CDN服务对资源访问加速,依然无法很好解决网络性能较差地区页面浏览的性能问题。为提高用户体验,Web预加载技术应运而生。
Web预加载是指在网页全部加载之前,对一些主要内容进行加载,以提供给用户更好的体验,减少等待的时间。特别的,在网络质量不好的情况下,能够提前将网页内容进行显示,从而实现网站性能优化。
然而,现有技术中在网站性能优化采用预加载技术的过程中,需要对现有网页进行改造,方能提升网页访问性能,且该种改造对于预加载的速度没有较为显著的提升,且不能解决静态资源与所访问页面的串行加载问题。
发明内容
本申请提供一种页面资源预加载的处理方法,以解决现有技术中静态资源与所访问页面的串行加载的问题。
本申请提供一种页面资源预加载的处理方法,包括:
拦截页面资源请求;
根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
在一些实施例中,还包括:
拦截页面导航请求;
根据所述页面导航请求,在所述浏览器后台进程运行脚本配置的资源依赖模块中获取针对所述页面导航请求的静态资源列表;
将所述静态资源列表存储在所述浏览器后台进程运行脚本配置的缓存中。
在一些实施例中,所述拦截页面导航请求,包括:
通过所述浏览器后台进程运行脚本配置的导航拦截事件获取所述页面导航请求。
在一些实施例中,所述根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源,包括:
根据拦截的所述页面资源请求,在所述浏览器后台进程运行脚本配置的缓存中存储的所述静态资源列表内查找与所述页面资源请求相匹配的资源。
在一些实施例中,所述拦截页面导航请求,包括:
拦截由浏览器主进程产生的所述页面导航请求。
在一些实施例中,所述当匹配成功时,返回与所述页面资源请求相匹配的资源,包括:
所述浏览器后台进程运行脚本配置的资源拦截事件,从所述浏览器后台进程运行脚本配置的缓存中将与所述页面资源请求相匹配的资源发送至浏览器主进程,进行预加载处理。
在一些实施例中,所述当匹配失败时,还包括:
通过所述浏览器后台进程运行脚本配置的资源拦截事件将拦截的页面资源请求更改为网络页面资源请求;
将所述网络页面资源请求发送至网络进程,求取与所述网络页面资源请求匹配的资源;
接收的来自所述网络进程反馈的与所述网络页面资源请求匹配的资源;
将与所述网络页面资源请求匹配的资源发送至浏览器主进程,进行预加载处理。
在一些实施例中,所述根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源中,所述在浏览器后台进程运行脚本配置的缓存,包括:
在所述浏览器后台进程运行脚本中添加预加载缓存。
本申请还提供一种页面资源预加载的处理装置,其特征在于,包括:
拦截单元,用于拦截页面资源请求;
匹配单元,用于根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
执行单元,用于当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
拦截页面资源请求;
根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
本申请还提供一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
拦截页面资源请求;
根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
与现有技术相比,本申请具有以下优点:
本申请提供的一种页面资源预加载的处理方法,首先,通过在浏览器后台进程运行脚本配置的拦截事件,拦截页面资源请求,根据所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源,当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理,进而能够提高页面预加载处理的速度。其次,本申请提供的页面资源预加载的处理方法中,通过拦截事件中的页面导航拦截事件和页面资源拦截事件,分别拦截针对同一请求的不同内容,进而能够在预加载处理过程中,改善现有网页面临的静态资源与所访问页面的串行加载问题。最后,本申请提供的页面资源预加载的处理方法,通过在浏览器后台进程运行脚本中配置预加载缓存,从而提高匹配的命中率,进一步提高页面预加载的处理速度。
附图说明
图1是本申请提供的一种页面资源预加载的处理方法实施例的流程图;
图2是本申请提供的一种页面资源预加载的处理方法实施例的交互示意图;
图3是本申请提供的一种页面资源预加载的处理装置实施例的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请中使用的术语是仅仅出于对特定实施例描述的目的,而非旨在限制本申请。在本申请中和所附权利要求书中所使用的描述方式例如:“一种、“第一”、和“第二”等,并非对数量上的限定或先后顺序上的限定,而是用来将同一类型的信息彼此区分。
请参考图1所示,图1是本申请提供的一种页面资源预加载的处理方法实施例的流程图。该方法包括:
步骤S101:拦截页面资源请求。
所述步骤S101中拦截页面资源请求可以通过在浏览器输入URL后,在浏览器主进程中产生页面资源请求,该页面资源请求会被浏览器后台进程运行脚本拦截。
请结合图1,参考图2所示,图2是本申请提供的一种页面资源预加载的处理方法实施例的交互示意图。
在本实施例中,所述浏览器后台进程运行脚本可以是Service Worker,简称SW,所述Service Worker独立于当前页面,脱离浏览器窗体,能够提供不需要与web页面交互的功能,例如:拦截和处理网络请求的功能,以及还包括以编程方式管理响应缓存的功能等。其中,拦截功能是指在页面发起http请求时,SW可以通过拦截事件fetch Event中的资源拦截事件实现拦截请求,所述拦截事件fetch Event能够根据拦截的页面资源请求给出针对页面资源请求的响应。
步骤S102:根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源。
所述Service Worker进程运行脚本配置的资源拦截事件的拦截页面资源请求后,需要根据页面资源请求,去Service Worker进程运行脚本配置的缓存中找与页面资源请求相匹配的资源,在本实施例中,资源可以存储在所述Service Worker进程运行脚本自身的缓存Cache中。为提高匹配的命中率,所述Service Worker进程运行脚本配置的缓存可以是在Service Worker进程运行脚本中添加预加载缓存Preload Cache。
因为拦截的页面资源请求需要与Service Worker进程运行脚本配置的缓存中找相匹配的资源,因此,需要预先在所述Service Worker进程运行脚本配置的缓存中存储资源,以供匹配,进而本申请提供的页面资源预加载的处理方法中还包括:
拦截页面导航请求;
根据所述页面导航请求,在所述浏览器后台进程运行脚本配置的资源依赖模块中获取针对所述页面导航请求的静态资源列表;
将所述静态资源列表存储在所述浏览器后台进程运行脚本配置的缓存中。
其中,所述拦截页面导航请求与拦截页面资源请求相同,也可以是通过在浏览器输入URL后,在浏览器主进程中产生页面导航请求,所述页面导航请求会被Service Worker进程运行脚本拦截。页面导航是展示页面信息的框架,便于引导用户获取需求的资源。
在本实施例中,所述拦截页面导航请求可以包括:
通过所述浏览器后台进程运行脚本配置的导航拦截事件拦截所述页面导航请求,例如:通过Service Worker进程运行脚本中配置的Navigation Fetch完成对页面导航请求的拦截。
所述Service Worker进程运行脚本预先会在访问页面的过程中将相应的网络资源存储在Service Worker进程运行脚本配置资源依赖模块中,因此,在拦截页面导航请求后,可以根据页面导航请求的相关信息,去Service Worker配置的资源依赖模块中获取针对页面导航请求的静态资源列表,可以理解为,与页面导航请求中的导航信息相匹配的静态资源列表。之后将所述静态资源列表缓存到Service Worker配置的预加载缓存中(Preload Cache)。
在本实施例中,静态资源列表可以通过所述Service Worker进程运行脚本中的Preload模块(预加载模块),根据所述页面导航请求去Service Worker进程运行脚本配置资源依赖模块中获取,之后所述Preload模块将获取的静态资源列表缓存到ServiceWorker配置的预加载缓存中(Preload Cache)。
根据上述内容,所述步骤S102中的根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源,可以包括:
根据拦截的所述页面资源请求,在所述浏览器后台进程运行脚本配置的缓存中存储的所述静态资源列表内查找与所述页面资源请求相匹配的资源。
根据上述步骤S102的匹配结果,执行步骤S103和步骤S104,在本实施例中,匹配结果有两种,一种是匹配成功,另一种是匹配失败,下面结合不同的匹配结果进行具体说明。
步骤S103:当匹配成功时,返回与所述页面资源请求相匹配的资源。
在本实施例中,当所述匹配结果为成功时,执行:返回与所述页面资源请求相匹配的资源,可以包括:
所述浏览器后台进程运行脚本配置的资源拦截事件,从所述浏览器后台进程运行脚本配置的缓存中将与所述页面资源请求相匹配的资源发送至浏览器主进程,所述浏览器根据获得的资源进行页面预加载处理,进而在脱离网络的情况下,仍然能够将页面资源在终端设备上进行显示。也就是说,所述Service Worker进程运行脚本中的拦截事件(FetchEvent)中的资源拦截事件(Resource Fetch),能够从所述Service Worker进程运行脚本配置的预加载缓存Preload Cache(Promise)中将匹配资源发送至浏览器前台或者是浏览器主进程。
步骤S104:当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
需要说明的是,上述步骤S104仅为在匹配失败情况下,本实施例中实现方式,实际上,当所述匹配结果为失败时,可以不做任何处理。
请结合图1,参考图2所示,在本实施例中,在匹配结果为失败时,还包括:
步骤104a:通过所述浏览器后台进程运行脚本配置的资源拦截事件将拦截的页面资源请求更改为网络页面资源请求;即:通过所述Service Worker进程运行脚本配置的源拦截事件(Resource Fetch),将拦截的页面资源请求更改为网络页面资源请求。
步骤104b:将所述网络页面资源请求发送至网络进程,求取与所述网络页面资源请求匹配的资源。
当所述网络进程接收到求取所述页面资源请求后,首先,在浏览器缓存中查找是否缓存有与所述网络页面资源请求匹配的资源,若有,确定浏览器缓存的资源是否过期,若过期,则向网络服务器CDN发出所述网络页面资源请求,将请求的资源返回给所述ServiceWorker进程运行脚本配置的资源拦截事件。
可以理解的是,在所述CDN服务器返回所述资源时,也可以判断所述资源是否过期,如果过期可以向源站进行求取。
步骤104c:接收来自所述网络进程反馈的与所述网络页面资源请求匹配的资源。向所述网络进程发送页面资源请求是通过Service Worker进程运行脚本配置的资源拦截事件,同时,所述资源拦截事件接收自所述网络进程反馈的与所述网络页面资源请求匹配的资源。
可以理解的是,所述网络页面资源请求与所述页面资源请求为相同请求内容。
步骤104d:将与所述网络页面资源请求匹配的资源发送至浏览器主进程,进行预加载处理。所述Service Worker进程运行脚本配置的资源拦截事件将接收的所述网络页面资源请求匹配的资源发送至浏览器主进程,由浏览器主进程进行预加载处理,即:将所述资源显示在客户端上。
以上为本申请提供的一种页面资源预加载的处理方法的实施例中,通过所述Service Worker进程运行脚本Fetch Event拦截事件中页面导航拦截事件(NavigationFetch)和页面资源拦截事件(Resource Fetch)分别拦截不同的请求,进而实现如下内容:首先,能够通过浏览器后台进程运行脚本,即脱离网络的情况下,获取页面资源,同时,在获取页面资源不成功时通过将拦截的页面资源请求更改为网络页面资源请求,向网络发起资源请求,从而能够实现快速的预加载;其次,通过将页面导航请求和页面资源请求分离,从而改善现有网页面临的静态资源与所访问页面的串行加载问题;最后,通过在所述ServiceWorker进程运行脚本配置预加载缓存,提高匹配的命中率,进一步提高页面预加载的处理速度。
以上是对本申请提供的一种页面资源预加载的处理方法实施例的说明。与前述提供页面资源预加载的处理方法实施例相对应,本申请还公开一种页面资源预加载的处理装置实施例,请参看图3,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图3所示,图3是本申请提供的一种页面资源预加载的处理装置实施例的结构示意图。该装置包括:
拦截单元301,用于拦截页面资源请求。
所述拦截单元301,通过在浏览器输入URL后,在浏览器主进程中产生页面资源请求,该页面资源请求会被浏览器后台进程运行脚本拦截。
在本实施例中,所述浏览器后台进程运行脚本可以是Service Worker,简称SW,所述Service Worker独立于当前页面,脱离浏览器窗体,能够提供不需要与web页面交互的功能。在页面发起http请求时,SW可以通过拦截事件fetch Event中的资源拦截事件实现拦截请求,所述拦截事件fetch Event能够根据拦截的页面资源请求给出针对页面资源请求的响应。
匹配单元302,用于根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源。
所述Service Worker进程运行脚本配置的资源拦截事件的拦截页面资源请求后,需要根据页面资源请求,去Service Worker进程运行脚本配置的缓存中找与页面资源请求相匹配的资源,在本实施例中,资源可以存储在所述Service Worker进程运行脚本自身的缓存Cache中。为提高匹配的命中率,所述Service Worker进程运行脚本配置的缓存可以是在Service Worker进程运行脚本中添加预加载缓存Preload Cache。
因为拦截的页面资源请求需要与Service Worker进程运行脚本配置的缓存中找相匹配的资源,因此,需要预先在所述Service Worker进程运行脚本配置的缓存中存储资源,以供匹配,进而本申请提供的页面资源预加载的处理方法中还包括:
拦截页面导航请求;
根据所述页面导航请求,在所述浏览器后台进程运行脚本配置的资源依赖模块中获取针对所述页面导航请求的静态资源列表;
将所述静态资源列表存储在所述浏览器后台进程运行脚本配置的缓存中。
其中,所述拦截页面导航请求与拦截页面资源请求相同,也可以是通过在浏览器输入URL后,在浏览器主进程中产生页面导航请求,所述页面导航请求会被Service Worker进程运行脚本拦截。页面导航是展示页面信息的框架,便于引导用户获取需求的资源。
在本实施例中,所述拦截页面导航请求可以包括:
通过所述浏览器后台进程运行脚本配置的导航拦截时间获取所述页面导航请求,例如:通过Service Worker进程运行脚本中配置的Navigation Fetch完成对页面导航请求的拦截。
所述Service Worker会在使用应用程序的过程中将相应的网络资源存储在Service Worker配置资源依赖模块中,因此,在拦截页面导航请求后,可以根据页面导航请求的相关信息,去Service Worker配置的资源依赖模块中获取针对页面导航请求的静态资源列表,可以理解为,与页面导航请求中的导航信息相匹配的静态资源列表。之后将所述静态资源列表缓存到Service Worker配置的预加载缓存中(Preload Cache)。
根据上述内容,所述步骤S102中的根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源,可以包括:
根据拦截的所述页面资源请求,在所述浏览器后台进程运行脚本配置的缓存中存储的所述静态资源列表内查找与所述页面资源请求相匹配的资源。
执行单元303,用于当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
所述执行单元303可以包括:返回子单元3031和/或发送子单元3032。在本实施例中,当所述匹配结果为成功时,所述返回子单元3031执行返回与所述页面资源请求相匹配的资源,所述返回子单元3031具体可以包括:
所述浏览器后台进程运行脚本配置的资源拦截事件,从所述浏览器后台进程运行脚本配置的缓存中将与所述页面资源请求相匹配的资源发送至浏览器主进程,所述浏览器根据获得的资源进行页面预加载处理,进而在脱离网络的情况下,仍然能够将页面资源在终端设备上进行显示。也就是说,所述Service Worker进程运行脚本中的拦截事件(FetchEvent)中的资源拦截事件(Resource Fetch),能够从所述Service Worker进程运行脚本配置的预加载缓存Preload Cache(Promise)中将匹配资源发送至浏览器前台或者是浏览器主进程。
在本实施例中,当所述匹配结果为失败时,可以不做任何处理。在本实施例中,在匹配结果为失败的情况下,进入所述发送子单元3032,所述发送子单元3032可以包括:
步骤a:通过所述浏览器后台进程运行脚本配置的资源拦截事件将拦截的页面资源请求更改为网络页面资源请求;即:通过所述Service Worker进程运行脚本配置的源拦截事件(Resource Fetch),将拦截的页面资源请求更改为网络页面资源请求。
步骤b:将所述网络页面资源请求发送至网络进程,求取与所述网络页面资源请求匹配的资源。
当所述网络进程接收到求取所述页面资源请求后,首先,在浏览器缓存中查找是否缓存有与所述网络页面资源请求匹配的资源,若有,确定浏览器缓存的资源是否过期,若过期,则向网络服务器CDN发出所述网络页面资源请求,将请求的资源返回给所述ServiceWorker进程运行脚本配置的资源拦截事件。
可以理解的是,在所述CDN服务器返回所述资源时,也可以判断所述资源是否过期,如果过期可以向源站进行求取。
步骤c:接收来自所述网络进程反馈的与所述网络页面资源请求匹配的资源。向所述网络进程发送页面资源请求是通过Service Worker进程运行脚本配置的资源拦截事件,同时,所述资源拦截事件接收自所述网络进程反馈的与所述网络页面资源请求匹配的资源。
可以理解的是,所述网络页面资源请求与所述页面资源请求为相同请求内容。
步骤d:将与所述网络页面资源请求匹配的资源发送至浏览器主进程,进行预加载处理。所述Service Worker进程运行脚本配置的资源拦截事件将接收的所述网络页面资源请求匹配的资源发送至浏览器主进程,由浏览器主进程进行预加载处理,即:将所述资源显示在客户端上。
以上是对本申请提供的一种页面资源预加载的处理装置实施例的说明,该装置的描述主要对应于上述方法的描述,对于所述装置描述过程中也可以结合图2参考理解,此处不再做过多赘述。
基于上述内容,本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
拦截页面资源请求;
根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
基于上述,本申请还一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
拦截页面资源请求;
根据拦截的所述页面资源请求,在浏览器后台进程运行脚本配置的缓存中查找与所述页面资源请求相匹配的资源;
当匹配成功时,返回与所述页面资源请求相匹配的资源;当匹配失败时,将所述页面资源请求发送至网络进程进行处理。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。