网页页面的显示方法、装置、计算机设备及存储介质与流程

文档序号:17740838发布日期:2019-05-24 20:04阅读:118来源:国知局
网页页面的显示方法、装置、计算机设备及存储介质与流程

本发明涉及互联网技术领域,尤其涉及一种网页页面的显示方法、装置、计算机设备及存储介质。



背景技术:

本地资源和网页视图资源的结合为用户浏览网页提供了良好浏览体验,但是,网页视图的加载需要下载网页中的框架文件、图层文件、图像文件和文本文件等,而文件下载占用大量的缓存,造成缓存资源被大量占用,使得缓存资源浪费。



技术实现要素:

本发明的目的是提供一种网页页面的显示方法、装置、计算机设备及存储介质,用于解决现有技术存在的问题。

为实现上述目的,本发明提供一种网页页面的显示方法,包括以下步骤:

步骤01,接收请求加载目标网页的网页加载请求,其中,所述网页加载请求用于请求加载所述目标网页的目标资源;

步骤02,根据所述网页加载请求检测所述目标资源是否已经存在于缓存中;

步骤03,在检测出所述目标资源已经存在于所述缓存中的情况下,直接调用所述缓存中已经存储的所述目标资源,并执行步骤s06;

步骤04,在检测出所述目标资源没有存在于所述缓存中的情况下,下载所述目标资源,缓存所述目标资源,调用所述目标资源以显示所述目标网页。

进一步地,所述步骤02包括:获取所述网页加载请求的统一资源定位符和网页资源请求指令;根据所述统一资源定位符和/或所述网页资源请求指令检测所述目标资源是否已经存在于缓存中。

进一步地,步骤03包括:分别调用网页资源拦截器接口和链接口来检测目标资源是否已经存在于缓存中,其中,所述网页资源拦截器接口定义了拦截的动作,所述链接口定义了驱动拦截器的链条;在检测到目标资源已经存在于缓存的情况下,利用所述网页资源拦截器接口和所述链接口返回所述缓存的输入流。

进一步地,所述步骤04包括:在检测出所述目标资源没有存在于所述缓存中的情况下,在类库内部,通过网址连接下载器建立网址链接;访问所述网址链接获取所述目标资源的文件流;下载所述目标资源。

进一步地,在访问所述网址链接获取所述目标资源的文件流之后,将所述目标资源的文件流封装为网页资源输入流对象;返回所述网页资源输入流对象,其中,所述网页资源输入流对象内部持有临时文件写入器的实例,在所述网页资源输入流对象被浏览器读取的同时,所述临时文件写入器将所述目标资源写入到缓存中。

进一步地,在步骤01之前,所述网页页面的显示方法还包括:定义拦截器和缓存提供器,其中,所述缓存提供器用于设置缓存管理策略;在所述网页页面上添加所述拦截器和所述缓存提供器。

进一步地,所述目标资源至少包括图片、js文件、css样式文件、html页面文件中的其中之一。

为实现上述目的,本发明还提供一种网页页面的显示装置,其包括:

接收模块,用于请求加载目标网页的网页加载请求,其中,所述网页加载请求用于请求加载所述目标网页的目标资源;

检测模块,用于根据拦截到的所述网页加载请求检测所述目标资源是否已经存在于缓存中;

调用模块,用于在检测出所述目标资源已经存在于所述缓存中的情况下,直接调用所述缓存中已经存储的所述目标资源;

下载模块,用于在检测出所述目标资源没有存在于所述缓存中的情况下,下载所述目标资源,缓存所述目标资源,调用所述目标资源以显示所述目标网页。

为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

本发明提供的网页页面的显示方法、装置、计算机设备及存储介质,通过将本地存储的网页资源共享给网页视图,使得本地缓存中已经存储的网页资源无需再次下载并且存储,解决了缓存资源被大量占用的技术问题,减少了重复下载网页资源对缓存存储空间的占用,避免了缓存资源的浪费。

附图说明

图1为本发明网页页面的显示方法实施例一的流程图;

图2为本发明网页页面的显示装置实施例一的程序模块示意图;

图3为本发明网页页面的显示装置实施例一的硬件结构示意图;

图4为本发明网页页面的显示方法实施例二的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供的网页页面的显示方法、装置、计算机设备及存储介质,适用于互联网领域,尤其是网页的加载和显示领域,为网页页面的显示提供了一种减少缓存空间占用的技术方案。本发明通过通过将本地存储的网页资源共享给网页视图,使得本地缓存中已经存储的网页资源无需再次下载并且存储,解决了缓存资源被大量占用的技术问题,减少了重复下载网页资源对缓存存储空间的占用,避免了缓存资源的浪费。

实施例一

请参阅图1,本实施例的一种网页页面的显示方法中,包括以下步骤:

步骤01,接收请求加载目标网页的网页加载请求,其中,所述网页加载请求用于请求加载所述目标网页的目标资源;

用户需要浏览目标网页时可以发出网页加载请求。在接收到该网页加载请求后,请求加载目标网页的目标资源。即,所述目标资源至少包括图片、js文件、css样式文件、html页面文件中的其中之一。

android的webview(网页视图)在加载网页的时候,能够通过系统提供的api(applicationprogramminginterface,应用程序编程接口)干预各个中间过程。要拦截的就是网页资源请求的环节。这个过程,webviewclient提供了webresinterceptor和chain这两个api,定义了拦截的动作以及驱动拦截器的链条。具体的实现是baseinterceptor和defaultinterceptorchain两个对象。

baseinterceptor是拦截发生和资源响应的核心对象,内部处理了包括寻找缓存资源、下载资源和写缓存的基本逻辑。同时它是一个抽象类,子类只需要实现它并根据对应的资源请求定义是否参与拦截、以及选择性的自定义配置下载和缓存的行为即可。

defaultinterceptorchain仅仅只是用于用于驱动拦截器链条的流转,类库内部可见。

步骤02,根据所述网页加载请求检测所述目标资源是否已经存在于缓存中;

上面的两个api是在调用了webview#loadurl()之后,即在请求加载所述目标网页的目标资源(包括html文件、js文件、css文件以及图片文件)的时候回调,通过webresinterceptor和chain这两个api来获取本地已经缓存的目标资源。

关于这两个api有几个点需要注意:

回调不是发生在主线程,因此不能处理关于用户界面的进程;

两个api接口的返回值是同步的;

webresourceresponse这个返回值可以自行构造,其中关键的属性主要是:代表资源内容的一个输入流inputstream以及标记这个资源内容类型的mmimetype;

只要在这两个api接口构造正确的webresourceresponse对象,就可以替换默认的请求为本地缓存的资源。因此,webview和native缓存共享的方案就是通过这两个api接口,在每次请求资源的时候根据请求的url/webresourcerequest判断是否存在本地的缓存,并在缓存存在的情况下将缓存的输入流返回。

即,获取所述网页加载请求的统一资源定位符(url)和网页资源请求指令(webresourcerequestll);根据所述统一资源定位符和/或所述网页资源请求指令检测所述目标资源是否已经存在于缓存中。

步骤03,在检测出所述目标资源已经存在于所述缓存中的情况下,直接调用所述缓存中已经存储的所述目标资源。

分别调用网页资源拦截器接口(webresinterceptor)和链接口(chain)来检测目标资源是否已经存在于缓存中,其中,所述网页资源拦截器接口定义了拦截的动作,所述链接口定义了驱动拦截器的链条;在检测到目标资源已经存在于缓存的情况下,利用所述网页资源拦截器接口和所述链接口返回所述缓存的输入流。

步骤04,在检测出所述目标资源没有存在于所述缓存中的情况下,下载所述目标资源,缓存所述目标资源,调用目标资源以显示目标网页。

进一步地,在检测出所述目标资源没有存在于所述缓存中的情况下,在类库内部,通过网址连接下载器建立网址链接;访问所述网址链接获取所述目标资源的文件流;下载所述目标资源。

进一步地,在访问所述网址链接获取所述目标资源的文件流之后,将所述目标资源的文件流封装为网页资源输入流对象;返回所述网页资源输入流对象,其中,所述网页资源输入流对象内部持有临时文件写入器的实例,在所述网页资源输入流对象被浏览器读取的同时,所述临时文件写入器将所述目标资源写入到缓存中。

资源响应有两种情况:缓存响应、下载响应。其中缓存响应为在检测到资源缓存不存在的情况下确认进行缓存;下载响应为在确定缓存的情况下进行缓存资源的下载。

当对应的资源缓存不存在的时候,会直接触发资源的下载。在类库内部,会通过httpconnectiondownloader直接建立一个httpurlconnection进行资源的下载,获得目标资源的文件流。

同时参考代理模式,设计了边读边写的动作。即下载的资源流通过被封装为一个webresinputstreamwrapper(网页资源输入流)对象后直接返回。webresinputstreamwrapper继承于inputstream,同时内部持有一个tempfilewriter(临时文件写入器)的实例。在webresinputstreamwrapper被浏览器读取的同时,tempfilewriter会把对应的资源写入到缓存当中,实现边读边写。

在下载目标资源后缓存这些目标资源,cacheprovider定义了提供缓存的实现的规范,可以根据实际的业务场景提供任意的缓存实现方案。同时库内部通过lrucache提供了简单的文件缓存的实现simplecacheprovider。同时为了拓展共享图片缓存的实现,类库还提供了一个基于fresco的图片缓存提供实例frescoimageprovider

cachekeyprovider使得业务可以根据实际的场景提供缓存的key的生成策略。

本发明实施例,通过将本地存储的网页资源共享给网页视图,使得本地缓存中已经存储的网页资源无需再次下载并且存储,解决了缓存资源被大量占用的技术问题,减少了重复下载网页资源对缓存存储空间的占用,避免了缓存资源的浪费。

进一步地,在步骤01之前,所述网页页面的显示方法还包括:定义拦截器和缓存提供器,其中,所述缓存提供器用于设置缓存管理策略;在所述网页页面上添加所述拦截器和所述缓存提供器。

在图片缓存以及简单的使用文件缓存资源这两个场景上,方案已经提供了直接的实现,可以简单的一键接入使用,总的接入步骤如下:

根据业务需要定义拦截器。只需要继承baseinterceptor,并实现仅有的一个抽象方法即可。如果需要图片拦截器,可以直接使用类库内部提供的imageinterceptor,在定义拦截器的同时,可以的缓存提供器,提供缓存管理策略。默认的情况下会使用simplecacheprovider提供文件缓存。使用hybridcachemanager#addcacheinterceptor()将拦截器添加都管理器中。

在初始化webview的时候,设置自定义的webviewclient对象,并在其拦截资源请求的入口方法中调用hybridcachemanager#interceptwebresrequest()方法。

请继续参阅图2,示出了一种网页页面的显示装置,在本实施例中,网页页面的显示装置10可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述网页页面的显示方法。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述网页页面的显示装置10在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:

接收模块11,用于请求加载目标网页的网页加载请求,其中,所述网页加载请求用于请求加载所述目标网页的目标资源;

检测模块12,用于根据所述网页加载请求检测所述目标资源是否已经存在于缓存中;

调用模块13,用于在检测出所述目标资源已经存在于所述缓存中的情况下,直接调用所述缓存中已经存储的所述目标资源;

下载模块14,用于在检测出所述目标资源没有存在于所述缓存中的情况下,下载所述目标资源,缓存所述目标资源,调用所述目标资源以显示所述目标网页。

本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图3所示。需要指出的是,图3仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器21包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储单元,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如实施例一的网页页面的显示装置10的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行网页页面的显示装置10,以实现实施例一的网页页面的显示方法。

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储网页页面的显示装置10,被处理器执行时实现实施例一的网页页面的显示方法。

实施例二

请参阅图4,本实施例的网页页面的显示方法以实施例一为基础,包括以下步骤:

s401,加载网页资源。

s402,拦截需要共享的资源。

s403,检测本地是否存在需要共享的资源,如果是,执行s406;如果否,执行s404。

s404,下载网页资源。

s405,将网页资源保存到缓存。

s406,读取缓存中的资源进行网页显示。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1