一种提升加载网页速度的方法技术

技术编号:18913481 阅读:30 留言:0更新日期:2018-09-12 02:56
本发明专利技术公开了一种提升加载网页速度的方法,包括并行处理的第一流程链和第二流程链;第一流程链包括注册NSUrlProtocol自定义子类,创建WebView并初始化,WebView发起页面请求,NSUrlProtocol自定义子类拦截WebView发出的页面请求;第二流程链包括构建NSUrlSession的网络连接,接收响应的页面数据,生成内存流;所述步骤S4之后与步骤b2之后流式桥接,NSUrlProtocol自定义子类加载页面数据,开启子线程,从内存流中获取页面数据,并返回给WebKit内核,WebView根据页面数据渲染页面,本设计使得请求时机较佳,加载速度加快,提升用户的应用体验。

A way to speed up loading web pages

The invention discloses a method for increasing the speed of loading web pages, including a first process chain and a second process chain for parallel processing; the first process chain includes registering a NSUrlProtocol custom subclass, creating a WebView and initializing it; the WebView initiates a page request; and the NSUrlProtocol custom subclass intercepts a page request issued by the WebView; The second process chain consists of constructing a network connection of NSUrlSession, receiving the page data of the response, and generating a memory stream; the flow bridge between step 54 and step B2 after that, the NSUrlProtocol custom subclass loads the page data, opens the subthread, gets the page data from the memory stream, and returns it to the WebKit kernel, WebView according to the page Face data rendering page, this design makes the request time better, loading speed faster, improve the user's application experience.

【技术实现步骤摘要】
一种提升加载网页速度的方法
本专利技术涉及页面加载处理领域,特别是一种能够提升加载网页速度的方法。
技术介绍
由于H5页面具有快速迭代、灵活配置运营等优势,在当今的移动端主流APP里,H5页面所占比重越来越大。传统的IOS终端加载H5页面的方式是完全依赖原生的WebView组件,先完成一系列的WebView初始化流程,等WebKit内核准备就绪后,再由WebView完全依赖网络去请求加载页面的相关资源、数据。此方式具有以下缺点,1)对页面的请求加载需要等原生的WebView组件初始化就绪后才开始,而这个初始化过程耗时不少,造成请求时机相对滞后;2)加载页面的资源和数据完全依赖网络,造成页面出现长时间的白屏现象,影响用户体验。
技术实现思路
为解决上述技术问题,本专利技术的目的是提供一种WebView组件初始化就绪的流程链以及加载页面数据的流程链通过并行处理后流式桥接以提高加载页面速度的方法。本专利技术采用的技术方案是:一种提升加载网页速度的方法,包括并行处理的第一流程链和第二流程链;第一流程链包括以下步骤:a1、注册用于拦截WebView请求的NSUrlProtocol自定义子类;a2、创建WebView并初始化;a3、WebView发起页面请求;a4、NSUrlProtocol自定义子类拦截WebView发出的页面请求;第二流程链包括以下步骤:b1、构建原生的基于NSUrlSession的网络连接,根据需加载的页面请求页面数据;b2、接收步骤b1发出请求后响应的页面数据,生成内存流;所述步骤S4之后与步骤b2之后流式桥接,并且还包括步骤:c、NSUrlProtocol自定义子类加载页面数据,开启子线程,从内存流中获取页面数据,并返回给WebKit内核;d、WebView根据页面数据渲染页面。在步骤b2之后还包括b21、在接收页面数据完毕后,写入本地缓存。所述步骤b1中在接收全量页面数据后,根据页面格式对全量页面数据进行分析,将全量页面数据分离出模板部分和数据部分,并且分别将相对应的全量页面数据、模板部分、数据部分写入本地缓存。所述步骤b1中,先判断需加载的页面中是否有存在本地缓存的部分,若存在则在步骤b2中优先加载本地缓存中的全量页面数据,并流式桥接到步骤c中,同时,将不存在本地缓存的部分通过网络请求页面数据,若不存在本体缓存的部分,则均通过网络请求页面数据。所述步骤b1后还包括步骤b31、对发出请求后响应的页面数据进行分析,判断目前的模板部分与原有的模版部分相比是否更新变化,若目前的模板部分存在更新变化,则进入步骤b32,若目前的模板部分不存在更新变化,则进入步骤b33;所述步骤b32包括步骤b321、重新分析页面数据,分离出更新后的模板部分和数据部分;步骤b322、分别将相对应的全量页面数据、模板部分、数据部分更新本地缓存;步骤b323、通知WebView进行整体刷新;所述步骤b33包括步骤b331、将目前的数据部分与本地缓存中原有的数据部分进行对比,分析出数据差异部分;步骤b332、将目前的数据部分更新本地缓存中原有的数据部分,同时将目前的数据部分与模版部分合并为全量页面数据,并更新本地缓存中原有的全面页面数据;步骤b333、将数据差异部分回调到WebView进行部分刷新。本专利技术的有益效果:本专利技术加载网页的方法,对WebView创建、初始化、WebKit就绪的第一流程链以及加载页面数据的第二流程链并行处理,同时处理后通过流式桥接,NSUrlProtocol自定义子类加载数据时,开启子线程,不断从内存流中获取数据,再返回到WebKit内核,WebView渲染页面,本设计在创建WebView等准备工作的同时,已经基于NSUrlSession的网络连接加载页面数据,使得请求时机较佳,加载速度加快,提升用户的应用体验。附图说明下面结合附图对本专利技术的具体实施方式做进一步的说明。图1是本专利技术加载网页的方法的基本流程图。图2是本专利技术加载网页的方法的在具备本地缓存的情况下的流程图。具体实施方式如图1、图2所示,本专利技术提升加载网页速度方法,可应用于IOS端并且用于加载H5等页面,此处加载网页的方法包括并行处理的第一流程链和第二流程链;第一流程链包括以下步骤:a1、注册用于拦截WebView请求的NSUrlProtocol自定义子类;a2、创建WebView并初始化;a3、WebView发起页面请求;a4、NSUrlProtocol自定义子类拦截WebView发出的页面请求;第二流程链包括以下步骤:b1、构建原生的基于NSUrlSession的网络连接,根据需加载的页面请求页面数据;b2、接收步骤b1发出请求后响应的页面数据,生成内存流;所述步骤S4之后与步骤b2之后流式桥接,并且还包括步骤:c、NSUrlProtocol自定义子类加载页面数据,开启子线程,从内存流中获取页面数据,并返回给WebKit内核;d、WebView根据页面数据渲染页面。其中,WebKit内核、基于WebKit内核来展现Wed页面的WebView组件、NSUrlProtocol的自定义子类以及基于NSUrlSession的网络连接均属于在智能终端浏览网络页面领域中常规的技术手段,其基本构架、构建关系、程序具体编写等不在此赘述,而流式桥接为在步骤b2中将页面数据生产内存流,NSUrlProtocol进而在数据流中进行读取。本设计对WebView创建、初始化、WebKit就绪的第一流程链以及加载页面数据的第二流程链并行处理,同时处理后通过流式桥接,NSUrlProtocol自定义子类加载数据时,开启子线程,不断从内存流中获取数据,再返回到WebKit内核,WebView渲染页面,本设计在创建WebView等准备工作的同时,已经基于NSUrlSession的网络连接加载页面数据,使得请求时机较佳,加载速度加快,提升用户的应用体验。上述的第一流程链、第二流程链、步骤c、步骤d中为实现本设计的最基本方法,进一步地,本设计可增设本地缓存,在步骤b2之后还包括b21、在接收页面数据完毕后,将接收的全量页面数据写入本地缓存。如图2所示,其中,步骤b1中在接收全量页面数据后,根据页面格式对全量页面数据进行分析,将全量页面数据分离出模板部分和数据部分,并且分别将相对应的全量页面数据、模板部分、数据部分写入本地缓存。当具有本地缓存后,本设计的方法还可以进行延伸,基于步骤b1对全量页面数据的分析方式以及写入本地缓存的方式,在下一次加载页面数据时,此处将新一次的页面数据、模板部分、数据部分叙述成目前的全量页面数据、模板部分、数据部分。步骤b1中,先判断需加载的页面中是否有存在本地缓存的部分,若存在则在步骤b2中优先加载本地缓存中的全量页面数据,并流式桥接到步骤c中,同时,将不存在本地缓存的部分通过网络请求页面数据,若不存在本体缓存的部分,则均通过网络请求页面数据。所述步骤b1后还包括步骤b31、对发出请求后响应的页面数据进行分析,判断目前的模板部分与原有的模版部分相比是否更新变化,若目前的模板部分存在更新变化,则进入步骤b32,若目前的模板部分不存在更新变化,则进入步骤b33;所述步骤b32包括步骤b321、重新分析页面数据,分离出更新后的模板部分和数据部分;步骤b本文档来自技高网...

【技术保护点】
1.一种提升加载网页速度的方法,其特征在于,包括并行处理的第一流程链和第二流程链;第一流程链包括以下步骤:a1、注册用于拦截WebView请求的NSUrlProtocol自定义子类;a2、创建WebView并初始化;a3、WebView发起页面请求;a4、NSUrlProtocol自定义子类拦截WebView发出的页面请求;第二流程链包括以下步骤:b1、构建原生的基于NSUrlSession的网络连接,根据需加载的页面请求页面数据;b2、接收步骤b1发出请求后响应的页面数据,生成内存流;所述步骤S4之后与步骤b2之后流式桥接,并且还包括步骤:c、NSUrlProtocol自定义子类加载页面数据,开启子线程,从内存流中获取页面数据,并返回给WebKit内核;d、WebView根据页面数据渲染页面。

【技术特征摘要】
1.一种提升加载网页速度的方法,其特征在于,包括并行处理的第一流程链和第二流程链;第一流程链包括以下步骤:a1、注册用于拦截WebView请求的NSUrlProtocol自定义子类;a2、创建WebView并初始化;a3、WebView发起页面请求;a4、NSUrlProtocol自定义子类拦截WebView发出的页面请求;第二流程链包括以下步骤:b1、构建原生的基于NSUrlSession的网络连接,根据需加载的页面请求页面数据;b2、接收步骤b1发出请求后响应的页面数据,生成内存流;所述步骤S4之后与步骤b2之后流式桥接,并且还包括步骤:c、NSUrlProtocol自定义子类加载页面数据,开启子线程,从内存流中获取页面数据,并返回给WebKit内核;d、WebView根据页面数据渲染页面。2.根据权利要求1所述的一种提升加载网页速度的方法,其特征在于:在步骤b2之后还包括b21、在接收页面数据完毕后,写入本地缓存。3.根据权利要求2所述的一种提升加载网页速度的方法,其特征在于:所述步骤b1中在接收全量页面数据后,根据页面格式对全量页面数据进行分析,将全量页面数据分离出模板部分和数据部分,并且分别将相对应的全量页面数据、模板部分、数据部分写入本地缓存。4.根据权利要...

【专利技术属性】
技术研发人员:余敬龙
申请(专利权)人:广东能龙教育股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1