CN114428922A - 页面加载方法、装置、终端设备及存储介质 - Google Patents
页面加载方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114428922A CN114428922A CN202210081200.9A CN202210081200A CN114428922A CN 114428922 A CN114428922 A CN 114428922A CN 202210081200 A CN202210081200 A CN 202210081200A CN 114428922 A CN114428922 A CN 114428922A
- Authority
- CN
- China
- Prior art keywords
- resource
- static
- resources
- static resource
- reading
- 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.)
- Pending
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 55
- 230000003068 static effect Effects 0.000 claims abstract description 300
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 70
- 230000006870 function Effects 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction 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
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- 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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
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)
Abstract
本申请实施例提供一种页面加载方法、装置、终端设备及存储介质。该方法包括:在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求;解析静态资源请求中的静态资源请求地址URL;根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流;创建多个管道流与多个异步线程;管道流包括管道输入流与管道输出流;利用多个异步线程将数据流写入多个管道输出流;从多个管道输出流将数据流读取到多个管道输入流;WebView读取管道输入流的数据流,得到静态资源;根据静态资源加载应用程序的页面。本申请的方法,通过多个子线程并发加载静态资源,提高了页面加载的效率。
Description
技术领域
本申请涉及物联网技术领域,尤其涉及一种页面加载方法、装置、终端设备及存储介质。
背景技术
当前Android客户端开发中常用WebView加载H5网页以实现相应功能,加载过程依赖于大量的JavaScript、css、图片等静态资源文件。用户在网页进行加载时,客户端下载这些静态资源文件会延长用户的等待时间。
可能的实现中,技术人员将静态资源打包成预置在应用程序客户端内的离线前端资源包。当网页加载时,WebView可从客户端本地的I/O接口读取展示当前网页所需的静态资源文件,减少了从网络I/O接口下载静态资源所耗费的时间。但一些Android***的WebView版本中,通常使用单线程来加载静态资源。在静态资源文件较多、体积较大的情况下,用户可能仍然需要花费一定时间等待网页展示出来,从而影响了用户的使用体验。
发明内容
本申请提供一种页面加载方法、装置、终端设备及存储介质,用以解决WebView使用单线程加载静态资源,加载效率低的问题。
第一方面,本申请提供一种页面加载方法,包括:
在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求;
可选的,在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求之前,还包括:
在服务端的静态资源数据库中获取源静态资源;
对源静态资源分级处理得到公共资源类别的静态资源以及私有资源类别的静态资源;私有资源类别和公共资源类别为预先定义的两种类别,公共资源类别的静态资源包括:技术框架类资源和跨业务功能的共同依赖资源;私有资源类别的静态资源包括:各业务功能独有或非公共依赖资源。
将公共资源类别的静态资源预存储在内存,以及将私有资源类别的静态资源存储在本地资源文件;本地资源包括本地资源文件和内存;本地资源文件用于存储私有资源类别的静态资源,内存用于预存储公共资源类别的静态资源。
解析静态资源请求中的静态资源请求地址URL;
根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流;
可选的,根据静态资源请求URL从客户端的本地资源中读取静态资源的数据流,包括:
根据静态资源请求URL得到资源文件路径;
根据资源文件路径从客户端的本地资源中读取静态资源的数据流。
可选的,根据资源文件路径从客户端的本地资源中读取静态资源的数据流,包括:
根据资源文件路径向内存读取静态资源,若在内存能够读取到静态资源,则确定静态资源的类别为公共资源类别,将静态资源转化为数据流;
若无法从内存中读取静态资源,则根据资源文件路径向本地资源文件读取静态资源;若在本地资源文件中能够读取到静态资源,则确定静态资源的类别为私有资源类别,将静态资源从本地资源文件读取到内存中,从内存读取静态资源并转化为数据流。
创建多个管道流与多个异步线程;管道流包括管道输入流与管道输出流;
利用多个异步线程将数据流写入多个管道输出流;
从多个管道输出流将数据流读取到多个管道输入流;
WebView读取管道输入流的数据流,得到静态资源;
根据静态资源加载应用程序的页面。
第二方面,本申请提供一种页面加载装置,包括:
请求拦截模块,用于在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求。
解析模块,用于解析静态资源请求中的静态资源请求地址URL。
第一读取模块,用于根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流。
可选的,第一读取模块,用于根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流,具体包括:
第一获取模块,用于根据静态资源请求URL得到资源文件路径。
第一读取子模块,用于根据资源文件路径从客户端的本地资源中读取静态资源的数据流。
可选的,第一读取子模块,用于根据资源文件路径从客户端的本地资源中读取静态资源的数据流,具体包括:
内存读取模块,用于根据资源文件路径向内存读取静态资源,若在内存能够读取到静态资源,则确定静态资源的类别为公共资源类别,将静态资源转化为数据流。
文件读取模块,用于若无法从内存中读取静态资源,则根据资源文件路径向本地资源文件读取静态资源;若在本地资源文件中能够读取到静态资源,则确定静态资源的类别为私有资源类别,将静态资源从本地资源文件读取到内存中,从内存读取静态资源并转化为数据流。
管道流模块,用于创建多个管道流与多个异步线程;管道流包括管道输入流与管道输出流;利用多个异步线程将数据流写入多个管道输出流;从多个管道输出流将数据流读取到多个管道输入流。
第二读取模块,用于WebView读取管道输入流的数据流,得到静态资源。
页面加载模块,用于根据静态资源加载应用程序的页面。
可选的,在请求拦截模块接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求之前,还包括:
第二获取模块,用于在服务端的静态资源数据库中获取源静态资源。
分级模块,用于对源静态资源分级处理得到公共资源类别的静态资源以及私有资源类别的静态资源;私有资源类别和公共资源类别为预先定义的两种类别,公共资源类别的静态资源包括:技术框架类资源和跨业务功能的共同依赖资源;私有资源类别的静态资源包括:各业务功能独有或非公共依赖资源。
存储模块,用于将公共资源类别的静态资源预存储在内存,以及将私有资源类别的静态资源存储在本地资源文件;本地资源包括本地资源文件和内存;本地资源文件用于存储私有资源类别的静态资源,内存用于预存储公共资源类别的静态资源。
第三方面,本申请实施例提供一种终端设备,包括:存储器和处理器;
存储器用于存储计算机指令;处理器用于运行存储器存储的计算机指令实现第一方面中任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现第一方面中任一项的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。
本申请提供的页面加载方法、装置、终端设备及存储介质,通过在应用拦截请求shouldInterceptRequest拦截静态资源请求后,从本地资源中读取静态资源数据流,依赖管道流的(管道输出流PipedOutputStream/管道输入流PipedInputStream)跨线程传输的特性,异步线程将数据流从管道输出流写入,WebView从管道输入流读取数据流,从而实现将静态资源文件从本地资源文件填充到WebView的网络资源共享WebResourceResponse中,保证多个静态资源加载过程中,可通过多个子线程并发加载资源以减少加载时间,提升加载效率。
附图说明
图1为本申请实施例提供的应用场景示意图;
图2为本申请一实施例提供的页面加载方法的流程示意图;
图3为本申请另一实施例提供的页面加载方法的流程示意图;
图4为本申请又一实施例提供的页面加载方法的流程示意图;
图5为本申请又一实施例提供的页面加载方法的流程示意图;
图6为本申请一实施例提供的页面加载装置的结构示意图;
图7为本申请一实施例提供的页面加载终端设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
网页视图(WebView):Android内置Webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个控件,WebView直译网页视图,用于渲染Web页面的功能,可看作一个可以嵌套到界面上的一个浏览器控件。
静态资源:是指非服务器运行动态生成的文件,主要包括渲染(html、css、js)、图片(jpeg、gif、png)、视频文件(flv、mpeg)以及其他文件(TXT等任意下载文件)等。静态资源是一种不需要查寻服务端数据库也不需要程序处理,直接就能够显示的页面。
应用拦截请求(shouldInterceptRequest):用于监听WebView发出的请求并做相应的处理,是webview发送请求时的一个***函数回调。shouldInterceptRequest的执行时机为当一个新页面即将被打开或重定向时(网页自动重定向或手动点击网页内部链接),拦截来自内部的资源加载请求,例如,url、js和css等。
资源响应对象(WebResourceResponse):根据静态资源请求进行响应,将shouldInterceptRequest拦截到的静态资源请求对应的数据以这个类对象的形式返回给WebView。
统一资源定位(Uniform Resource Locator,URL):URL是在Internet的WWW服务程序上用于指定信息位置的表示方法,它指定了如HTTP或FTP等Internet协议,是惟一能够识别Internet上具体的计算机、目录或文件位置的命名约定。
本申请实施例提供的页面加载方法,可适用于图1所示的应用场景示意图。如图1所示,本申请实施例所提供的页面加载方法可适用于安装有Android、IOS和Windows等操作***的客户端。客户端为用户方所持的终端设备,客户端上可以安装至少一个应用程序,例如:社交应用、通讯应用、娱乐应用和支付应用等。用户点击应用程序的图标后,终端设备执行应用程序相应功能,打开应用程序进入主页面。在这个过程中,用户点击图标后,客户端呈现的界面往往是白屏或未响应界面—显示部分内容的H5网页—显示全部内容的H5网页,这意味着用户在使用应用程序时常需要等待一定时间。以应用程序浏览器为例,如图1中的a所示,用户在手机界面上点击浏览器图标,客户端响应该次操作。手机屏幕呈现图1中的b所示的界面,该界面为等待加载界面,这个过程中,手机的WebView从本地加载浏览器主页面的静态资源,同时从服务端下载动态资源。因动态资源下载时间较长,静态资源加载完毕后,进入如图1中的c所示界面,该界面显示加载有静态资源及部分动态资源的网页。全部资源加载完毕后进入如图1中的d所示的界面,用户可基于手机客户端浏览当前网页。
可能的实现中,页面加载方法仍存在一下问题:
在当前Android客户端开发中常用Hybrid混合开发技术,即使用WebView加载H5网页以实现某些功能。加载过程依赖于大量的JavaScript、css、图片等静态资源文件。随着当前web前端技术发展和需求的复杂化,静态资源文件体积越来越大,网页加载时下载静态资源的时间越来越长。可能的实现中,将静态资源打包成离线前端资源包,在客户端对应用程序安装包进行安装时,应用程序对应的离线前端资源包也会下载到客户端上,于是静态资源文件预置到了客户端本地。在使用过程中,当网页加载时,WebView可从客户端本地的I/O接口直接读取展示当前网页所需的静态资源文件,进而减少从网络I/O接口下载静态资源所耗费的时间。但一些Android***的WebView版本中,使用shouldInterceptRequest在单线程上加载静态资源。在静态资源文件较多、体积较大的情况下,用户可能仍然需要花费一定时间等待网页展示出来,若shouldInterceptRequest处理时间过长,WebView界面可能出现阻塞,从而影响了用户的使用体验。
针对上述问题,本申请提供了一种页面加载方法,在shouldInterceptRequest拦截静态资源请求后,从本地资源中读取静态资源数据流,依赖管道流的(管道输出流PipedOutputStream/管道输入流PipedInputStream)跨线程传输的特性,异步线程将数据流从管道输出流写入,WebView从管道输入流读取数据流,从而实现将静态资源文件从本地资源文件填充到WebView的WebResourceResponse中,保证多个静态资源加载过程中,可通过多个子线程并发加载资源,从而减少加载时间,提升加载效率。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的静态数据加载方法的流程示意图。请参见图2,该方法可以包括:
S201、在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求。
其中,开启指令用于操控指示客户端开启应用程序。可选的,用户点击客户端已有的应用程序的图标,客户端操作***响应该次操作,根据接收到应用程序的开启指令启动应用程序,此时可检测到应用程序处于开启状态。可选的,用户可基于当前已处于开启状态的应用程序,开启其他应用程序。例如:用户在游戏应用程序的充值页面进行充值行为,客户端可从游戏应用程序开启具有支付功能的应用程序,客户端界面由游戏充值界面跳转至支付界面,此时可检测到支付应用程序处于开启状态。
在接收到应用程序的开启指令并响应开启指令时,客户端的WebView发起静态资源请求。在访问H5页面时,客户端会发送网页请求,网页请求用于请求获取渲染H5页面的静态资源及动态资源。其中,网页请求中请求加载静态资源的为静态资源请求。静态资源请求用于请求向客户端的本地资源中加载应用程序的H5页面内容的静态资源。静态资源可以包括:JavaScript文件、css文件和图片等。当WebView发起静态资源请求时,通过WebView的应用拦截请求shouldInterceptRequest方法对静态资源请求进行拦截。
示例性的,Webview添加一个事件监听对象(WebViewClient)重写应用拦截请求shouldInterceptRequest,shouldInterceptRequest对静态资源请求进行拦截。
S202、解析静态资源请求中的静态资源请求地址URL。
静态资源请求中包括静态资源请求地址URL,WebView对拦截下的静态资源请求进行解析,得到URL。静态资源请求地址URL为该次页面加载静态资源时所需访问的URL地址。
S203、根据URL从客户端的本地资源中读取静态资源的数据流。
URL包括能够找到所对应的静态资源的信息,静态资源信息可以是静态资源预置到客户端时,静态资源清单中静态资源的文件名;也可以是静态资源转换处理形成的字符串,本申请对此不做限制。
可选的,根据静态资源请求URL得到资源文件路径。
客户端解析静态资源请求URL后,到本地资源中寻址静态资源,确定资源文件路径。示例性的,URL根据匹配规则寻址本地资源,匹配规则可以是静态资源的文件名,可以是静态资源转化处理后的字符串,也可以根据其他匹配规则进行寻址。客户端可通过内部逻辑确定URL匹配的唯一静态资源的路径,将其转换成客户端的资源文件路径。
示例性的,由request.getUrl解析到静态资源请求地址URL后,可根据文件加载器FileLoader的输出目录查找本地资源中静态资源的地址,即根据URL可得到本地资源文件路径。客户端可基于本地资源文件路径到本地资源中寻址静态资源。
示例性的,实现代码如下:
可选的,根据资源文件路径从客户端的本地资源中读取静态资源的数据流。
示例性的,基于Java IO中的输入流(InputStream)从本地资源中读取静态资源,将静态资源转化为数据流。InputStream与数据源连接,用来读取字节数据,数据源包括文件、网络连接和管道等。
S204、创建多个管道流与多个异步线程;管道流包括管道输入流与管道输出流。
管道流是用来在多个线程之间进行信息传递的Java流,具有跨线程传输的特性。管道流包括管道输出流(PipedOutputStream)和管道输入流(PipedInputStream)。异步线程用于数据流在本地资源与管道之间以及管道与WebView之间的读取与写入。
在正式使用管道流之前,java创建多个管道流与多个异步线程。多个管道流与对应的异步线程可实现多线程并发加载静态资源的功能。
示例性的,实现代码如下:
管道输入流与管道输出流分别连接不同的线程。示例性的,如图3所示,多个子线程并发加载静态资源。管道输出流连接有多个异步线程线程A和线程C等,管道输入流连接有线程B和线程D,通过将管道输入流与管道输出流关联后,可实现数据流由线程A传输,跨越到线程B进行传输;数据流由线程C传输,跨越到线程D进行传输。
本申请实施例中示例性的给出使用构造函数的方法将管道输入流与管道输出流进行关联,可以理解的是,将管道输入流与管道输出流连接到一起的方法不唯一,本申请对此不做限制。
S205、利用多个异步线程将数据流写入多个管道输出流。
一个管道输出流对应于一个管道输入流构成一对管道流。多个异步线程将数据流写入多个管道输出流。示例性的,如图3所示,线程A和线程C等从本地资源中读取静态资源数据流,数据流通过线程A和线程C等传输到管道输出流。
S206、从多个管道输出流将数据流读取到多个管道输入流。
管道输入流与管道输出流相关联后,管道输入流可读取管道输出流写入的静态资源数据流。
S207、WebView读取管道输入流的数据流,得到静态资源。
WebView利用网络资源共享WebResourceResponse读取管道输入流的数据流,得到静态资源。
WebView使用管道输入流创建Response。Response返回后WebView可利用WebResourceResponse读取管道输入流的数据流,从而得到静态资源。
示例性的,实现代码如下:
S208、根据静态资源加载应用程序的页面。
客户端根据静态资源对H5页面进行渲染,将静态资源渲染后的H5页面显示在客户端的显示界面上。
本申请实施例中提供的一种页面加载方法,依赖Java封装的管道输出流与管道输入流将静态资源数据流通过管道流的方式填充到WebView的WebResourceResponse,从而实现多个线程并发加载资源,提升页面加载效率。
图4为本申请实施例提供的页面加载方法的流程示意图。请参见图4,在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求之前,还包括:
S301、在服务端的静态资源数据库中获取源静态资源。
示例性的,在客户端开启应用程序时,客户端会检测应用程序的更新状态。若应用程序存在新发布的版本,则客户端从服务端的静态资源数据库中获取源静态资源,源静态资源为更新后的静态资源。
示例性的,若应用程序不存在更新后的版本,则沿用当前的本地资源中的静态资源。客户端在首次下载应用程序时,从服务端下载应用程序安装包,应用程序安装包中包括源静态资源,安装包可以为Android安装包(apk)文件、iPhone安装包(ipa)文件或WindowsPhone安装包(xap)文件。客户端在安装应用程序时,将源静态资源预置到客户端本地资源。源静态资源在本地资源的存储位置可由用户自定义设置。
S302、对源静态资源分级处理得到公共资源类别的静态资源以及私有资源类别的静态资源。
可选的,为更合理高效地进行资源加载,将源静态资源根据业务功能和应用频率等分为公共资源类别的静态资源(公共资源)和私有资源类别的静态资源(私有资源);私有资源类别和公共资源类别为预先定义的两种类别。
公共资源包括:技术框架类资源和跨业务功能的共同依赖资源。技术框架类资源为前端框架类的静态资源。示例性的,jQuery是一个快速、简洁的JavaScript框架,前端的js静态资源均依赖jQuery代码库。其中,jQuery.js类的文件属于技术框架类资源。每个应用程序均设置有多个业务功能,相应的,每个功能的实现均对应一个H5页面。在H5页面加载时,WebView发出与当前H5页面对应的静态资源请求。加载不同页面的静态请求中可能包含共同依赖的静态资源,将该部分静态资源定义为跨业务功能的共同依赖资源。
私有资源包括:各业务功能独有或非公共依赖资源。相应的,不满足公共资源类型的静态资源设置为私有资源,即加载多个页面时,每个页面所独有或非公共依赖的静态资源。
示例性的,客户端获取源静态资源后,web前端可分析应用程序中每个功能对应的网页所依赖的静态资源。判断静态资源是否为加载多个页面时共同依赖资源或技术框架类资源,若是,则确定静态资源为公共资源;否则确定为私有资源。
S303、将公共资源类别的静态资源预存储在内存,以及将私有资源类别的静态资源存储在本地资源文件。
本地资源包括本地资源文件和内存;本地资源文件用于存储私有资源类别的静态资源,内存用于预存储公共资源类别的静态资源。
可选的,静态资源类别为公共资源类别时,将公共资源预读取到内存中;静态资源类别为私有资源类别时,将私有资源存储到本地资源文件中。
本申请实施例提供的一种页面加载方法,对静态资源进行分级处理,将静态资源分为公共资源和私有资源,并将公共资源提前预读取到内存中。页面加载时,应用频率较高的公共资源可直接从内存中读取,而私有资源保持文件读取方式,这样在防止内存占用过高的同时,提升了静态资源的读取效率。
示例性的,图5为本申请实施例提供的页面加载方法的流程示意图。如图5所示,根据资源文件路径从客户端的本地资源中读取静态资源的数据流,包括:
S501、根据资源文件路径向内存读取静态资源,若在内存能够读取到静态资源,则确定静态资源类别为公共资源类别,将静态资源转化为数据流。
可能的实现中,H5网页通过文件读取的方式加载静态资源,文件读取的效率相对于内存读取低很多。若将全部静态资源预读取到内存中,有可能造成内存占用过高,引起内存溢出的问题。将公共资源预读取到内存中,实现从内存中更快地加载资源,私有资源保持文件读取方式,防止内存占用过高。
可选的,根据资源文件路径设置寻址优先级。优先从内存中读取静态资源,若内存中能够寻址到静态资源,则说明静态资源为公共资源。从内存中直接读取公共资源的字节数组,并转化为数据流。
示例性的,如图5中的a所示,从内存中读取公共资源的数据流,并通过线程A写入管道输出流。管道输入流与管道输出流关联后,管道输入流读取管道输出流中的数据流。WebView将管道输入流的数据流读取到WebResourceResponse中。
S502、若无法从内存中读取静态资源,则根据资源文件路径向本地资源文件读取静态资源;若在本地资源文件中能够读取到静态资源,则确定静态资源类别为私有资源类别,将静态资源从本地资源文件读取到内存中,从内存读取静态资源并转化为数据流。
可选的,若内存中未寻址到静态资源,则根据资源文件路径到本地资源文件中寻址。若从本地资源文件中可寻址到静态资源,则说明静态资源为私有资源。设置字节数组作为缓存的内存,将静态资源从本地资源文件读取到内存中,并从内存中读取公共资源的字节数组,转化为数据流。管道输出流可读取数据流,以实现多个子线程并发加载资源。
示例性的,如图5中的b所示,从本地资源文件中读取私有资源的数据流,并通过线程C写入管道输出流。管道输入流与管道输出流关联后,管道输入流读取管道输出流中的数据流。WebView将管道输入流的数据流读取到WebResourceResponse中。
示例性的,实现代码如下:
本申请实施例提供的页面加载方法,通过将公共资源预读取到内存中,实现从内存中更快地加载资源,私有资源保持文件读取方式,防止内存占用过高。
图6为本申请一实施例提供的数据处理装置的结构示意图。如图6所示,本实施例提供的数据处理装置60可以包括:
请求拦截模块601,用于在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求。
解析模块602,用于解析静态资源请求中的静态资源请求地址URL。
第一读取模块603,用于根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流。
可选的,第一读取模块603,用于根据静态资源请求地址URL从客户端的本地资源中读取静态资源的数据流,具体包括:
第一获取模块,用于根据静态资源请求URL得到资源文件路径。
第一读取子模块,用于根据资源文件路径从客户端的本地资源中读取静态资源的数据流。
可选的,第一读取子模块,用于根据资源文件路径从客户端的本地资源中读取静态资源的数据流,具体包括:
内存读取模块,用于根据资源文件路径向内存读取静态资源,若在内存能够读取到静态资源,则确定静态资源类别为公共资源类别,将静态资源转化为数据流。
文件读取模块,用于若无法从内存中读取静态资源,则根据资源文件路径向本地资源文件读取静态资源;若在本地资源文件中能够读取到静态资源,则确定静态资源类别为私有资源类别,将静态资源从本地资源文件读取到内存中,从内存读取静态资源并转化为数据流。
管道流模块604,用于创建多个管道流与多个异步线程;管道流包括管道输入流与管道输出流;利用多个异步线程将数据流写入多个管道输出流;从多个管道输出流将数据流读取到多个管道输入流。
第二读取模块605,用于WebView读取管道输入流的数据流,得到静态资源。
页面加载模块606,用于根据静态资源加载应用程序的页面。
可选的,在请求拦截模块601接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求之前,还包括:
第二获取模块,用于在服务端的静态资源数据库中获取源静态资源。
分级模块,用于对源静态资源分级处理得到公共资源类别的静态资源以及私有资源类别的静态资源;私有资源类别和公共资源类别为预先定义的两种类别,公共资源类别的静态资源包括:技术框架类资源和跨业务功能的共同依赖资源;私有资源类别的静态资源包括:各业务功能独有或非公共依赖资源。
存储模块,用于将公共资源类别的静态资源预存储在内存,以及将私有资源类别的静态资源存储在本地资源文件;本地资源包括本地资源文件和内存;本地资源文件用于存储私有资源类别的静态资源,内存用于预存储公共资源类别的静态资源。
本申请实施例的数据处理装置,可以用于执行上述数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本申请一实施例提供的数据处理终端设备的结构示意图。如图7所示,本实施例提供的数据处理终端设备70可以包括:
处理器701;以及
存储器702,用于存储终端设备的可执行指令;
其中,处理器配置为经由执行可执行指令来执行上述数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述终端设备或者服务器的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域技术人员可以理解,上述任一方法实施例的全部或部分步骤可以通过与程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中,该程序被执行时,执行上述方法实施例的全部或部分的步骤。
本申请技术方案如果以软件的形式实现并作为产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本申请的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括计算机程序或者若干指令。该计算机软件产品使得计算机设备(可以是个人计算机、服务器、网络设备或者类似的电子设备)执行本申请实施例一所述方法的全部或部分步骤。前述的存储介质可以是U盘、移动硬盘、ROM、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本发申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种页面加载方法,其特征在于,应用于客户端,所述方法包括:
在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求;
解析所述静态资源请求中的静态资源请求地址URL;
根据所述静态资源请求地址URL从所述客户端的本地资源中读取静态资源的数据流;
创建多个管道流与多个异步线程;所述管道流包括管道输入流与管道输出流;
利用多个所述异步线程将所述数据流写入多个所述管道输出流;
从多个所述管道输出流将数据流读取到多个所述管道输入流;
所述WebView读取所述管道输入流的所述数据流,得到所述静态资源;
根据所述静态资源加载所述应用程序的页面。
2.根据权利要求1所述的方法,其特征在于,所述本地资源包括本地资源文件和内存;所述本地资源文件用于存储私有资源类别的静态资源,所述内存用于预存储公共资源类别的静态资源;所述私有资源类别和所述公共资源类别为预先定义的两种类别,所述公共资源类别的静态资源包括:技术框架类资源和跨业务功能的共同依赖资源;所述私有资源类别的静态资源包括:各业务功能独有或非公共依赖资源。
3.根据权利要求2所述的方法,其特征在于,所述根据所述静态资源请求URL从所述客户端的本地资源中读取静态资源的数据流,包括:
根据所述静态资源请求URL得到资源文件路径;
根据所述资源文件路径从所述客户端的所述本地资源中读取所述静态资源的所述数据流。
4.根据权利要求3所述的方法,其特征在于,所述根据所述资源文件路径从所述客户端的本地资源中读取静态资源的数据流,包括:
根据所述资源文件路径向所述内存读取所述静态资源,若在所述内存能够读取到所述静态资源,则确定所述静态资源的类别为所述公共资源类别,将所述静态资源转化为所述数据流;
若无法从所述内存中读取所述静态资源,则根据所述资源文件路径向所述本地资源文件读取所述静态资源;若在所述本地资源文件中能够读取到所述静态资源,则确定所述静态资源的类别为所述私有资源类别,将所述静态资源从所述本地资源文件读取到所述内存中,从所述内存读取所述静态资源并转化为所述数据流。
5.根据权利要求2所述的方法,其特征在于,所述在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求之前,还包括:
在服务端的静态资源数据库中获取源静态资源;
对所述源静态资源分级处理得到所述公共资源类别的静态资源以及所述私有资源类别的静态资源;
将所述公共资源类别的静态资源预存储在所述内存,以及将所述私有资源类别的静态资源存储在所述本地资源文件。
6.根据权利要求1或2所述的方法,其特征在于,所述在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求,包括:
在接收到所述应用程序的所述开启指令时,利用应用拦截请求shouldInterceptRequest拦截所述WebView发送的所述静态资源请求。
7.根据权利要求1或2所述的方法,其特征在于,所述WebView读取所述管道输入流的所述数据流,得到所述静态资源,包括:
所述WebView利用网络资源共享WebResourceResponse读取所述管道输入流的所述数据流,得到所述静态资源。
8.一种页面加载装置,其特征在于,应用于客户端,所述装置包括:
请求拦截模块,用于在接收到应用程序的开启指令时,拦截网页视图WebView发送的静态资源请求;
解析模块,用于解析所述静态资源请求中的静态资源请求地址URL;
第一读取模块,用于根据所述静态资源请求地址URL从所述客户端的本地资源中读取静态资源的数据流;
管道流模块,用于创建多个管道流与多个异步线程;所述管道流包括管道输入流与管道输出流;利用多个所述异步线程将所述数据流写入多个所述管道输出流;从多个所述管道输出流将数据流读取到多个所述管道输入流;
第二读取模块,用于所述WebView读取所述管道输入流的所述数据流,得到所述静态资源;
页面加载模块,用于根据所述静态资源加载所述应用程序的页面。
9.一种终端设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机指令;所述处理器用于运行所述存储器存储的所述计算机指令实现权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210081200.9A CN114428922A (zh) | 2022-01-24 | 2022-01-24 | 页面加载方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210081200.9A CN114428922A (zh) | 2022-01-24 | 2022-01-24 | 页面加载方法、装置、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428922A true CN114428922A (zh) | 2022-05-03 |
Family
ID=81312577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210081200.9A Pending CN114428922A (zh) | 2022-01-24 | 2022-01-24 | 页面加载方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428922A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407091A (zh) * | 2023-12-12 | 2024-01-16 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573066A (zh) * | 2015-01-26 | 2015-04-29 | 中国工商银行股份有限公司 | 页面复用方法及装置 |
CN106095506A (zh) * | 2016-06-14 | 2016-11-09 | 乐视控股(北京)有限公司 | 一种页面加载方法及装置 |
CN106933865A (zh) * | 2015-12-31 | 2017-07-07 | 北京五八信息技术有限公司 | 移动应用程序网页应用的资源加载方法及装置 |
CN108520031A (zh) * | 2018-03-27 | 2018-09-11 | 广东能龙教育股份有限公司 | 一种提升加载网页速度的方法 |
CN110020326A (zh) * | 2018-09-07 | 2019-07-16 | 天翼电子商务有限公司 | 一种提升Webview打开速度的方法 |
US20200057658A1 (en) * | 2017-03-08 | 2020-02-20 | Alibaba Group Holding Limited | Method and system for loading resources |
CN111159605A (zh) * | 2019-12-31 | 2020-05-15 | 杭州云缔盟科技有限公司 | 解决拦截转发Android Webview的请求后页面加载变慢的方法 |
CN112988284A (zh) * | 2021-05-13 | 2021-06-18 | 太平金融科技服务(上海)有限公司 | 应用程序启动方法、装置、计算机设备和存储介质 |
-
2022
- 2022-01-24 CN CN202210081200.9A patent/CN114428922A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573066A (zh) * | 2015-01-26 | 2015-04-29 | 中国工商银行股份有限公司 | 页面复用方法及装置 |
CN106933865A (zh) * | 2015-12-31 | 2017-07-07 | 北京五八信息技术有限公司 | 移动应用程序网页应用的资源加载方法及装置 |
CN106095506A (zh) * | 2016-06-14 | 2016-11-09 | 乐视控股(北京)有限公司 | 一种页面加载方法及装置 |
US20200057658A1 (en) * | 2017-03-08 | 2020-02-20 | Alibaba Group Holding Limited | Method and system for loading resources |
CN108520031A (zh) * | 2018-03-27 | 2018-09-11 | 广东能龙教育股份有限公司 | 一种提升加载网页速度的方法 |
CN110020326A (zh) * | 2018-09-07 | 2019-07-16 | 天翼电子商务有限公司 | 一种提升Webview打开速度的方法 |
CN111159605A (zh) * | 2019-12-31 | 2020-05-15 | 杭州云缔盟科技有限公司 | 解决拦截转发Android Webview的请求后页面加载变慢的方法 |
CN112988284A (zh) * | 2021-05-13 | 2021-06-18 | 太平金融科技服务(上海)有限公司 | 应用程序启动方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
铂金小鸟: "Android WebView shouldInterceptRequest 异步加载", 《HTTPS://MY.OSCHINA.NET/FANTS/BLOG/389648》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407091A (zh) * | 2023-12-12 | 2024-01-16 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及*** |
CN117407091B (zh) * | 2023-12-12 | 2024-03-19 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11647096B2 (en) | Method and apparatus for automatically optimizing the loading of images in a cloud-based proxy service | |
CN110120917B (zh) | 基于内容的路由方法及装置 | |
US9565265B2 (en) | Method and apparatus for automatically optimizing the loading of images in a cloud-based proxy service | |
WO2020199751A1 (zh) | 用于加载页面图片的方法、装置和电子设备 | |
CN111666497B (zh) | 应用程序的加载方法、装置、电子设备及可读存储介质 | |
CN112269959B (zh) | 展示内容的控制方法、装置、可读介质和电子设备 | |
US11032683B2 (en) | Method and apparatus for publishing cloud resource | |
CA2745981C (en) | A computer-implemented method, a computer program product and an embedded system for increasing the speed of data retrieval by a client on the embedded system | |
CN111651703A (zh) | 一种页面跳转方法、装置、电子设备及可读存储介质 | |
KR20120016333A (ko) | 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치 | |
CN114428922A (zh) | 页面加载方法、装置、终端设备及存储介质 | |
US9270727B1 (en) | Facilitating access to data in network page generation code | |
EP3125541A1 (en) | Data acquisition and interaction method, set top box, server and multimedia system | |
CN116561013B (zh) | 基于目标服务框架的测试方法、装置、电子设备和介质 | |
CN103793459B (zh) | 一种网页打开方法及装置 | |
CN110851194A (zh) | 一种用于获取实现新接口的代码的方法和装置 | |
US11379653B2 (en) | Rendering method for on-demand loading of PDF file on network | |
CN114528510A (zh) | 网页数据处理的方法、装置、电子设备及介质 | |
US10990750B2 (en) | Dynamically bundling web page resources | |
US20150248347A1 (en) | Content providing apparatus and method, and computer program product | |
CN112256992A (zh) | 一种融合多链接地址的信息流的原生渲染的方法与设备 | |
CN112596838B (zh) | 通用Web页面的显示方法、装置、设备及存储介质 | |
CN113630434A (zh) | 一种针对客户端访问请求的处理方法及服务端 | |
US9380118B2 (en) | Analytics based scoping of HTML5 web storage attributes | |
CN117609647A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220503 |
|
RJ01 | Rejection of invention patent application after publication |