CN110866198B - 静态资源缓存方法、***、装置、计算机设备和存储介质 - Google Patents
静态资源缓存方法、***、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110866198B CN110866198B CN201910924847.1A CN201910924847A CN110866198B CN 110866198 B CN110866198 B CN 110866198B CN 201910924847 A CN201910924847 A CN 201910924847A CN 110866198 B CN110866198 B CN 110866198B
- Authority
- CN
- China
- Prior art keywords
- resource
- hash value
- static
- static resource
- information list
- 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.)
- Active
Links
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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种静态资源缓存方法、***、装置、计算机设备和存储介质。该方法包括:获取应用程序的启动指令;根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值;获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定待更新静态资源路径;将待更新静态资源路径通过资源加载请求发送至静态资源服务器,接收静态资源服务器返回的目标静态资源;对目标静态资源进行哈希值计算,得到目标资源哈希值;当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。采用本方法能够提高静态资源更新效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种静态资源缓存方法、***、装置、计算机设备和存储介质。
背景技术
随着技术的发展,越来越多的智能设备走进了人们的生活,比如,智能手机、平板电脑、智能电视等。其中,用户可以在智能设备中装载各种各样的应用程序,以实现各种不同的功能。当智能设备运行应用程序时,往往需要获取能够渲染页面的静态资源,比如,需要获取图片、JS文件、CSS文件等。为了加快页面的渲染速度,提高渲染效率,智能设备通常需要在本地存储静态资源,从而在进行页面渲染时,直接加载本地存储的静态资源。
然而,服务器中的静态资源时常需要进行更新,当应用程序需要通过最新版本的静态资源进行页面渲染时,智能设备可以向服务器发送资源获取请求,需要重新下载应用程序对应的所有静态资源,容易导致静态资源的更新效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高静态资源更新效率的静态资源缓存方法、***、装置、计算机设备和存储介质。
一种静态资源缓存方法,该方法包括:
获取应用程序的启动指令,启动指令用于指示启动应用程序;
根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值;
获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径;
将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源;
对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值;
当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在其中一个实施例中,静态资源缓存方法还包括:根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在其中一个实施例中,静态资源缓存方法还包括:拦截加载应用程序网页的请求,对请求进行分析,确定请求指定的静态资源的资源哈希值,根据请求指定的静态资源的资源哈希值拼接出本地缓存的静态资源路径,若静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源,接收并缓存第一静态资源。
在其中一个实施例中,静态资源缓存方法还包括:获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在其中一个实施例中,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,包括:获取初始资源信息列表对应的初始列表版本哈希值,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
在其中一个实施例中,对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值,包括:获取哈希值算法,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
一种静态资源缓存***,该***包括:
终端,用于获取应用程序的启动指令,启动指令用于指示启动应用程序,发送启动指令至接口服务器;
接口服务器,用于接收启动指令,根据启动指令请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值;
终端,用于接收当前资源信息列表,获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,将待更新静态资源路径通过资源加载请求发送至静态资源服务器;
静态资源服务器,用于接收资源加载请求,根据资源加载请求中的待更新静态资源路径加载并返回对应的目标静态资源至终端;
终端,用于接收返回的目标静态资源,对目标静态资源进行哈希值计算,得到对应的目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在其中一个实施例中,终端还用于:发送启动指令至渲染服务器;渲染服务器,用于接收启动指令,根据启动指令获取网页代码文件,根据网页代码文件进行虚拟树的构建得到网页运行文件,将网页运行文件返回至终端;终端,还用于从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取应用程序的启动指令,启动指令用于指示启动应用程序;
根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值;
获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径;
将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源;
对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值;
当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取应用程序的启动指令,启动指令用于指示启动应用程序;
根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值;
获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径;
将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源;
对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值;
当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
上述静态资源缓存方法、装置、计算机设备和存储介质,在应用程序启动之后,向接口服务器请求当前资源信息列表,将当前资源信息列表与本地缓存的初始资源信息列表进行比较,得到当前资源信息列表中只发生变更的待更新静态资源标识,根据当前资源信息列表中待更新静态资源标识对应的待更新静态资源路径向静态资源服务器获取对应的目标静态资源,对目标静态资源进行哈希值计算,得到目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。因此,当应用程序需要通过最新版本的静态资源或者更新本地缓存的静态资源时,不需要重新下载该应用程序对应的所有静态资源,只需要对发生变更的静态资源进行更新,减少了用户的流量,也节省了服务的带宽和压力。
附图说明
图1为一个实施例中静态资源缓存方法的应用环境图;
图2为一个实施例中静态资源缓存方法的流程示意图;
图3为另一个实施例中静态资源缓存方法的流程示意图;
图4为又一个实施例中静态资源缓存方法的流程示意图;
图5为再一个实施例中静态资源缓存方法的流程示意图;
图6为一个实施例中待更新静态资源路径确定步骤的流程示意图;
图7为一个实施例中目标资源哈希值计算步骤的流程示意图;
图8为一个实施例中静态资源缓存***的结构框图;
图9为另一个实施例中静态资源缓存***的结构框图;
图10为一个实施例中静态资源缓存装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的静态资源缓存方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与接口服务器104进行通信,终端102通过网络与静态资源服务器106进行通信,终端102通过网络与渲染服务器108进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,接口服务器104、静态资源服务器106和渲染服务器108可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
具体地,终端102上安装有相关的应用程序,可通过相关的应用程序触发生成启动指令,启动指令用于指示启动应用程序,可将启动指令发送至接口服务器104和渲染服务器108。接口服务器104接收到启动指令后,根据启动指令获取当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值,并将当前资源信息列表返回至终端102。
进一步地,终端102获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,将待更新静态资源路径通过资源加载请求发送至静态资源服务器106。静态资源服务器106接收到资源加载请求后,根据待更新静态资源路径获取并返回对应的目标静态资源至终端102。
最后,终端102对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值。当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
其中,渲染服务器108接收到启动指令后,根据启动指令获取网页代码文件,对网页代码文件进行虚拟树构建得到网页运行文件,将网页运行文件返回至终端102。终端102接收到网页运行文件后,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在一个实施例中,如图2所示,提供了一种静态资源缓存方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,获取应用程序的启动指令,启动指令用于指示启动应用程序。
其中,这里的应用程序是为了完成某项或某几项特定任务而被开发运行于操作***之上的计算机程序,应用程序上设置有网页,可通过启动应用程序进入目标网页,但是启动应用程序后,需要静态资源渲染当前需要显示的目标网页,或者当需要访问目标网页时,同样需要静态资源渲染访问的目标网页。当渲染完毕后,方能显示目标网页。
而启动指令是用来指示应用程序启动的。其中,启动指令可对应用程序的相关按钮进行点击操作触发生成启动指令,或者还可对应用程序进行语音操作触发生成启动指令,或者还可以是通过定时事件触发生成启动指令。
步骤204,根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值。
其中,当前资源信息列表是指目前正在请求处理的资源信息列表,而资源信息列表是应用程序中网页所对应的静态资源信息组成的列表,也就是说,资源信息列表描述了静态资源相关的静态资源信息,资源列表中包括但不限于应用程序各个网页所对应的静态资源标识、静态资源标识对应的静态资源部署在静态服务器的静态资源路径和静态资源标识对应的资源哈希值,其中静态资源标识是用来唯一标识对应的静态资源的。
其中,当资源信息列表中的静态资源信息需要更新或者新增一种或者多种类型的静态资源时,资源信息列表是随之更新的,更新后的资源信息列表为不同版本,也就是说,资源信息列表需要迭代更新,每次迭代更新对应一个版本的资源信息列表,可用列表版本哈希值来标识不同版本的资源信息列表。即,资源信息列表都存在对应的列表版本哈希值,所谓列表版本哈希值是用来唯一标识不同版本的资源信息列表的,这里可以用哈希值来标识资源信息列表,哈希值是利用哈希算法计算得到的,是通过对静态资源进行加密运算得到数字和字母组成的字符串。哈希算法Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。其中,当资源信息列表对应的列表版本哈希值发生变化时,说明资源信息列表中的静态资源发生了变化。
其中,静态资源路径是静态资源标识对应的静态资源部署在静态资源服务器的存储路径,即可以通过静态资源路径从静态资源服务器中获取到对应的静态资源。而静态资源标识对应的资源哈希值是用来标识静态资源标识,这里可以用哈希值来标识对应的静态资源标识。
在一个实施例中,资源信息列表的数据结构可以如下:
具体地,可以预先将资源信息列表部署在接口服务器中,当终端获取到应用程序的启动指令后,将启动指令发送至接口服务器,接口服务器根据启动指令向终端返回当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值。
步骤206,获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径。
其中,这里的初始资源信息列表是终端本地缓存的资源信息列表,终端本地缓存的资源信息列表中的静态资源可以不断更新的,即上一次更新的静态资源可以以资源信息列表缓存至本地,可以作为下一次的本地缓存的初始资源信息列表。其中,终端首次启动应用程序时,此时终端本地并没有缓存的初始资源信息列表,可以将接口服务器中的当前资源信息列表全量下载,直接缓存至本地,等终端获取到下一次启动应用程序的指令时,可以将本地缓存的资源信息列表作为初始资源信息列表。其中,可以根据本地缓存的初始资源信息列表的初始列表版本哈希值和当前资源信息列表对应的当前列表版本哈希值确定当前资源信息列表是否发生了变化,当初始列表版本哈希值与当前列表版本哈希值不一致时,说明当前资源信息列表发生了改变,反之,当初始列表版本哈希值与当前列表版本哈希值一致时,说明当前资源信息列表未发生改变,则无需执行后续步骤。
具体地,当初始列表版本哈希值与当前列表版本哈希值不一致时,说明当前资源信息列表发生了改变,需确定当前资源信息列表中的具体哪个静态资源发生了改变,因此可以遍历初始资源信息列表和当前资源信息列表,将初始资源信息列表和当前资源信息列表进行比对,将相同静态资源标识在两个资源信息列表中对应的资源哈希值不同的确定为待更新静态资源标识,由于当前资源信息列表中包括静态资源标识对应的静态资源路径,因此,确定待更新静态资源标识后,可以从当前资源信息列表中获取待更新静态资源标识对应的待更新静态资源路径。
步骤208,将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源。
其中,待更新静态资源路径是待更新静态资源对应的路径,待更新静态资源与本地缓存的对应的静态资源是发生了变化的,因此需要从静态资源服务器中获取待更新静态资源。具体可以是将待更新静态资源路径通过资源加载请求发送至静态资源服务器中,所谓资源加载请求是用来请求待更新静态资源的,静态资源服务器可以预先存储静态资源,以及每次已更新的静态资源都预先存储在静态资源服务器中。
进一步地,静态资源服务器接收到资源加载请求后,根据资源加载请求中的待更新静态资源路径查找匹配的目标静态资源,将目标静态资源返回至终端。也就是说,终端本地缓存的资源信息列表中的某个静态资源发生变化时,只需要对发生变更的静态资源进行更新,无需将整个资源信息列表进行更新,减小了终端的压力,减少静态资源更新的数据量,提高静态资源的更新效率。
步骤210,对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
具体地,终端接收静态资源服务器返回的目标静态资源,由于目标静态资源与本地缓存的对应的静态资源相比,是发生了改变,因此,目标静态资源对应的资源哈希值也是随之发生变化的,需要更新目标静态资源对应的资源哈希值,具体可以是对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值。其中,哈希值计算可以是获取哈希值算法,哈希值算法是一种只能加密,不能解密的密码学算法,可以将任意长度的信息转换成一段固定长度的字符串,例如哈希函数等,根据哈希算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。其中,资源哈希值是通过对目标静态资源进行加密运算得到的一组二进制值。
步骤212,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
具体地,在得到目标静态资源对应的目标资源哈希值后,检测目标资源哈希值与本地缓存的对应的当前资源哈希值是否一致,当目标资源哈希值和对应的当前资源哈希值不一致时,说明目标静态资源下载失败,丢弃该目标静态资源,反之,当目标资源哈希值和对应的当前资源哈希值一致时,说明本地缓存的对应的当前静态资源更新成功,缓存目标静态资源至本地。
例如,本地缓存的初始资源信息列表包括A、B和C,A对应的当前资源哈希值为110、B对应的当前资源哈希值为100、C对应的当前资源哈希值为111,而当前资源信息列表同样包括A、B和C,A对应的当前资源哈希值为110、B对应的当前资源哈希值为100、C对应的当前资源哈希值为110,其中,可以确定待更新静态资源为C,从静态资源服务器请求返回最新的静态资源C,对最新的静态资源C进行哈希算法计算得到对应的目标资源哈希值为110,则认为目标静态资源下载成功,将最新的静态资源C代替本地缓存的静态资源C。反之,如果对最新的静态资源C进行哈希算法计算得到对应的目标资源哈希值不是110,则认为目标静态资源下载失败,将静态资源服务器返回的静态资源C进行丢弃。
上述静态资源缓存方法中,在应用程序启动之后,向接口服务器请求当前资源信息列表,将当前资源信息列表与本地缓存的初始资源信息列表进行比较,得到当前资源信息列表中只发生变更的待更新静态资源标识,根据当前资源信息列表中待更新静态资源标识对应的待更新静态资源路径向静态资源服务器获取对应的目标静态资源,对目标静态资源进行哈希值计算,得到目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。因此,当应用程序需要通过最新版本的静态资源或者更新本地缓存的静态资源时,不需要重新下载该应用程序对应的所有静态资源,只需要对发生变更的静态资源进行更新,减少了用户的流量,也节省了服务的带宽和压力。
在一个实施例中,如图3所示,静态资源缓存方法还包括:
步骤302,根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的。
其中,网页运行文件是应用程序网页运行相关的文件,网页运行文件可以是html文件,终端获取到应用程序的启动指令后,同时将启动指令发送至渲染服务器和接口服务器,向渲染服务器请求网页运行文件,向接口服务器请求静态资源信息列表。渲染服务器接收到终端发送的启动指令后,获取网页代码文件,网页代码文件是应用程序网页实现的相关的文件,可以是json文件,在对获取到的网页代码文件进行虚拟树的构建,从而得到网页运行文件。这里的虚拟树的构建是利用json文件生成一个树状的数据结构。其中,将网页运行文件的生成过程部署至渲染服务器进行实现,而终端可直接获取已经实现好的网页运行文件,无需在终端本地实现网页运行文件,减少了终端构建虚拟树的时间,从而节省了网页渲染的效率(注:从而提升了网页的渲染效率)。
步骤304,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
具体地,终端接收渲染服务器返回的网页运行文件后,因为网页的渲染往往还是需要通过图片、JS文件、CSS文件等静态资源进行网页的渲染,所以从终端本地缓存的静态资源中获取网页运行文件所需的网页运行静态资源,最后根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
也就是说,终端在渲染目标网页的时候,无需在本地进行虚拟树的构建,直接从渲染服务器获取网页运行文件,从本地缓存的静态资源中匹配网页运行文件所需的网页运行静态资源,最后根据网页运行静态资源直接执行网页运行文件,渲染得到目标网页,减少了虚拟树的构建时间,在目标网页点击之前,就已经渲染好目标网页,提高了网页的渲染效率。因此,终端获取到目标网页的进入指令后,由于在此之前,已经渲染好了目标网页,因此终端检测到目标网页的进入指令后可直接显示目标页面,减少应用程序中网页的白屏时间,从而提高目标网页的展示速度。
在一个实施例中,如图4所示,静态资源缓存方法还包括:
步骤402,拦截加载应用程序网页的请求。
步骤404,对请求进行分析,确定请求指定的静态资源的资源哈希值。
步骤406,根据请求指定的静态资源的资源哈希值查找本地缓存对应的静态资源路径。
其中,终端在获取到应用程序的启动指令后,可通过应用程序的展示界面触发生成网页对应的进入请求,当终端检测到网页的进入请求后,拦截加载应用程序网页的所有请求,即拦截加载网页中的每一个请求,对拦截的请求进行分析,确定请求指令的静态资源的资源哈希值。也就是说,对拦截的请求进行分析,根据请求从本地缓存的静态资源中查找匹配对应的静态资源,获取匹配到的静态资源对应的资源哈希值。
进一步地,可以根据请求指定的静态资源的资源哈希值拼接出本地缓存的静态资源路径,具体可以是根据资源哈希值的先后顺序查找本地缓存的静态资源,获取查找得到的静态资源对应的静态资源路径。
步骤408,若查找到的静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源。
步骤410,接收并缓存第一静态资源。
其中,在获取查找得到的静态资源对应的静态资源路径后,需要检测查找到的静态资源路径是否有效,若查找到的静态资源路径有效,则说明终端本地缓存中包括该静态资源,反之,若查找到的静态资源路径无效,则说明终端本地缓存中并没有该静态资源。因此,需要从静态资源服务器中获取请求对应的静态资源。具体可以是,若查找到的静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源。这里的静态资源获取请求是用来请求获取对应的静态资源的,可通过终端的应用程序的相关界面进行操作触发生成的。
进一步地,静态资源服务器接收到终端发送的静态资源获取请求,静态资源获取请求中携带着静态资源标识,静态资源服务器根据静态资源获取请求查找匹配的静态资源,将查找到的静态资源作为第一静态资源,并将第一静态资源返回至终端,该第一静态资源与拦截到的请求是匹配的。
最后,终端接收静态资源服务器返回的第一静态资源,并将第一静态资源缓存至本地。
在一个实施例中,如图5所示,静态资源缓存方法还包括:
步骤502,获取应用程序对应的项目源代码。
步骤504,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源。
步骤506,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
其中,这里的项目源代码也叫源代码、源程序,即编程者(程序员)编写的程序代码,这里的项目源代码,一般都是es6(emcascript 2016标准语言)、sass(css预编译语言),未压缩处理的图片资源等,不同的应用程序对应不同的项目源代码。具体地,获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源。这里的资源打包程序是用来对项目源代码进行压缩打包的,可以是webpack等,现有的资源打包程序都可以使用,在此不作任何限制。其中,应用程序在上线之前,可以获取到应用程序对应的项目源代码,安装资源打包程序,利用资源打包程序(如webpack)对项目源代码进行压缩构建,自动对项目源代码进行处理,可以分别得到资源信息列表、网页运行文件和静态资源。
在一个实施例中,资源打包程序为webpack,webpack对项目源代码进行压缩构建得到静态资源的步骤可以是:webpack插件经过普通配置后,经过打包构建都会产生相对应的js文件、css文件、图片文件等静态资源。在一个实施例中,资源打包程序为webpack,webpack对项目源代码进行压缩构建得到资源信息列表的步骤可以是:webpack提供了用户自定义插件开发的方式。在开发webpack插件的时候,监听某个事件的生命周期,在这个周期,能够通过编译程序对象获取webpack构建后存储在本地的静态资源的列表、静态资源的列表对应的本地存储路径。在这一步,可以获取到资源信息列表,并且读取到静态资源然后进行对其进行哈希算法(如md5算法)的哈希计算,得到对应的资源哈希值。另外,经过静态资源部署的规则,可以推算出静态资源信息列表中的静态资源部署到静态资源服务器后,每个静态资源在静态资源服务器对应的静态资源路径。
在一个实施例中,资源打包程序为webpack,webpack对项目源代码进行压缩构建得到网页运行文件的步骤可以是:webpack根据项目源代码获取网页运行文件所需的网页代码文件,对网页代码文件进行虚拟树的构建从而得到网页运行文件。
进一步地,在得到资源信息列表、网页运行文件和静态资源后,将资源信息列表、网页运行文件和静态资源分别部署至对应的服务器,通过不同的服务器对其进行处理,从而提高处理效率。具体可以是,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在一个实施例中,如图6所示,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,包括:
步骤602,获取初始资源信息列表对应的初始列表版本哈希值。
步骤604,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值。
其中,可通过列表版本哈希值确定当前资源信息列表与本地资源信息列表相比,是否发生了改变,具体可以是获取本地缓存的初始资源信息列表对应的初始列表版本哈希值,和获取当前资源信息列表对应的当前列表版本哈希值,检测初始列表版本哈希值和当前列表版本哈希值是否一致,当检测到初始列表版本哈希值和当前列表版本哈希值一致时,说明当前资源信息列表与本地缓存的资源信息列表相同,无需执行后续步骤,可将当前资源信息列表进行丢弃。
其中,当检测到的初始列表版本哈希值和当前列表版本哈希值不一致时,说明当前资源信息列表与本地缓存的初始资源信息列表相比,已经发生了变化,需要确定具体发生变化的静态资源标识。具体可以是,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值。
其中,第一静态资源是当前资源信息列表中的静态资源,可以从当前资源信息列表中随机确定一个静态资源标识作为第一静态资源标识,或者按照静态资源标识的先后顺序,依次作为第一静态资源。
步骤606,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值。
步骤608,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
其中,当前资源信息列表和本地缓存的初始资源信息列表存在相同的静态资源,从当前资源信息列表的静态资源中确定了第一静态资源标识后,将第一静态资源标识在初始资源信息列表中对应的资源哈希值作为第二资源哈希值。即,这里的第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值。
其中,可通过第一资源哈希值和第二资源哈希值确定第一静态资源标识对应的静态资源是否发生了变化,当第一资源哈希值和第二资源哈希值一致时,说明当前资源信息列表中的第一静态资源标识与本地缓存的初始资源信息列表中的第一静态资源标识相比,并未发生任何变化,并不需要更新该第一静态资源标识对应的静态资源。
反之,当第一资源哈希值和第二资源哈希值不一致时,说明当前资源信息列表中的第一静态资源标识与本地缓存的初始资源信息列表中的第一静态资源标识相比,发生了变化,因此需要更新本地缓存的第一静态资源标识,因此将第一静态资源标识确定为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
例如,本地缓存的初始资源信息列表如下:
静态资源标识 | 资源哈希值 | 静态资源路径 |
A | 111 | xxxxxxx1 |
B | 100 | xxxxxxx2 |
C | 101 | xxxxxxx3 |
当前资源信息列表如下:
静态资源标识 | 资源哈希值 | 静态资源路径 |
A | 111 | xxxxxxx4 |
B | 110 | xxxxxxx5 |
C | 101 | xxxxxxx6 |
其中,可以根据初始资源信息列表对应的列表版本哈希值和当前资源信息列表对应的列表版本哈希值可得知,当前资源信息列表相比初始资源信息列表是发生了变化的,因此从当前资源信息列表中获取第一静态资源标识,可以随机获取,例如将静态资源标识B作为第一静态资源,获取第一静态资源在当前资源信息列表中对应的第一资源哈希值为110,获取第一静态资源在初始资源信息列表中对应的第二资源哈希值为100,由于第一资源哈希值和第二资源哈希值不一致,因此可确定该静态资源标识B为待更新静态资源标识,将静态资源标识B对应的静态资源路径确定为待更新静态资源标识对应的待更新静态资源路径。
在一个实施例中,如图7所示,对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值,包括:
步骤702,获取哈希值算法。
步骤704,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
其中,这里的哈希值算法是用来计算哈希值的,可以是MD5(MessageDigestAlgorithm 5,信息摘要算法5)作为哈希算法。具体地,终端接收静态资源服务器返回的目标静态资源后,获取哈希算法,通过哈希算法对目标静态资源进行哈希值计算,从而得到对应的目标资源哈希值。其中,哈希值计算可以是获取哈希值算法,哈希值算法是一种只能加密,不能解密的密码学算法,可以将任意长度的信息转换成一段固定长度的字符串,例如哈希函数等,根据哈希算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。其中,资源哈希值是通过对目标静态资源进行加密运算得到的一组二进制值。
在一个具体的实施例中,提供了一种静态资源缓存方法,该方法具体包括以下步骤:
1、获取应用程序对应的项目源代码。
2、利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源。
3、将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
4、获取应用程序的启动指令,启动指令用于指示启动应用程序。
5、根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值。
6、获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径。
6-1、获取初始资源信息列表对应的初始列表版本哈希值。
6-2、当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值。
6-3、获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值。
6-4、当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
7、将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源。
8、对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
8-1、获取哈希值算法。
8-2、根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
9、当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
10、根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的。
11、从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
12、拦截加载应用程序网页的请求。
13、对请求进行分析,确定请求指定的静态资源的资源哈希值。
14、根据请求指定的静态资源的资源哈希值查找本地缓存对应的静态资源路径。
15、若查找到的静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源。
16、接收并缓存第一静态资源。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种静态资源缓存***800,其中:
终端802,用于获取应用程序的启动指令,启动指令用于指示启动应用程序,发送启动指令至接口服务器。
接口服务器804,用于接收启动指令,根据启动指令请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值。
终端802,用于接收当前资源信息列表,获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,将待更新静态资源路径通过资源加载请求发送至静态资源服务器。
静态资源服务器806,用于接收资源加载请求,根据资源加载请求中的待更新静态资源路径加载并返回对应的目标静态资源至终端。
终端802,用于接收返回的目标静态资源,对目标静态资源进行哈希值计算,得到对应的目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在一个实施例中,如图9所示,静态资源缓存***800还包括渲染服务器808,其中,终端802还用于:发送启动指令至渲染服务器。
渲染服务器808,用于接收启动指令,根据启动指令获取网页代码文件,根据网页代码文件进行虚拟树的构建得到网页运行文件,将网页运行文件返回至终端。
终端802,还用于从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在一个实施例中,终端802还用于拦截加载应用程序网页的请求,对请求进行分析,确定请求指定的静态资源的资源哈希值,根据请求指定的静态资源的资源哈希值查找本地缓存对应的静态资源路径,若查找到的静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源,接收并缓存第一静态资源。
在一个实施例中,终端802还用于获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源,将资源信息列表部署至接口服务器804中,将网页运行文件部署至渲染服务器808中,将静态资源部署至静态资源服务器806中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在一个实施例中,终端802还用于获取初始资源信息列表对应的初始列表版本哈希值,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
在一个实施例中,终端802还用于获取哈希值算法,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
在一个实施例中,如图10所示,提供了一种静态资源缓存装置1000,包括:启动指令获取模块1002、当前资源信息列表请求模块1004、初始资源信息列表获取模块1006、资源加载请求发送模块1008、资源哈希值计算模块1010和目标静态资源缓存模块1012,其中:
启动指令获取模块1002,用于获取应用程序的启动指令,启动指令用于指示启动应用程序。
当前资源信息列表请求模块1004,用于根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值。
初始资源信息列表获取模块1006,用于获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径。
资源加载请求发送模块1008,用于将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源。
资源哈希值计算模块1010,用于对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
目标静态资源缓存模块1012,用于当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在一个实施例中,静态资源缓存装置1000还用于根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在一个实施例中,静态资源缓存装置1000还用于拦截加载应用程序网页的请求,对请求进行分析,确定请求指定的静态资源的资源哈希值,根据请求指定的静态资源的资源哈希值查找本地缓存对应的静态资源路径,若查找到的静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源,接收并缓存第一静态资源。
在一个实施例中,静态资源缓存装置1000还用于获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在一个实施例中,静态资源缓存装置1000还用于获取初始资源信息列表对应的初始列表版本哈希值,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
在一个实施例中,静态资源缓存装置1000还用于获取哈希值算法,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
关于静态资源缓存装置的具体限定可以参见上文中对于静态资源缓存方法的限定,在此不再赘述。上述静态资源缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端102。如图11所示,该计算机设备包括该计算机设备包括通过***总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作***,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现静态资源缓存方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行静态资源缓存方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取应用程序的启动指令,启动指令用于指示启动应用程序,根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值,获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源,对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:拦截加载应用程序网页的请求,对请求进行分析,确定请求指定的静态资源的资源哈希值,根据请求指定的静态资源的资源哈希值拼接出本地缓存的静态资源路径,若静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源,接收并缓存第一静态资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取初始资源信息列表对应的初始列表版本哈希值,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取哈希值算法,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取应用程序的启动指令,启动指令用于指示启动应用程序,根据启动指令向接口服务器请求当前资源信息列表,当前资源信息列表存在对应的当前列表版本哈希值,当前资源信息列表中包括静态资源标识、静态资源标识对应的静态资源路径以及静态资源标识对应的当前资源哈希值,获取本地缓存的初始资源信息列表,在当前列表版本哈希值和初始资源信息列表对应的初始列表版本哈希值不一致时,根据当前资源信息列表和初始资源信息列表确定当前资源信息列表中的待更新静态资源标识对应的待更新静态资源路径,将待更新静态资源路径通过资源加载请求发送至静态资源服务器,资源加载请求用于指示静态资源服务器根据待更新静态资源路径获取并返回对应的目标静态资源,对返回的目标静态资源进行哈希值计算,得到对应的目标资源哈希值,当目标资源哈希值和对应的当前资源哈希值一致时,缓存目标静态资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据启动指令向渲染服务器请求网页运行文件,网页运行文件是渲染服务器根据网页代码文件进行虚拟树构建得到的,从缓存的静态资源中获取网页运行文件所需的网页运行静态资源,根据网页运行静态资源执行网页运行文件,渲染得到目标网页。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:拦截加载应用程序网页的请求,对请求进行分析,确定请求指定的静态资源的资源哈希值,根据请求指定的静态资源的资源哈希值拼接出本地缓存的静态资源路径,若静态资源路径无效,则发送静态资源获取请求至静态资源服务器,以使静态资源服务器根据静态资源获取请求返回对应的第一静态资源,接收并缓存第一静态资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取应用程序对应的项目源代码,利用资源打包程序对项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源,将资源信息列表部署至接口服务器中,将网页运行文件部署至渲染服务器中,将静态资源部署至静态资源服务器中,资源信息列表中包括静态资源部署到静态资源服务器对应的静态资源路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取初始资源信息列表对应的初始列表版本哈希值,当初始列表版本哈希值与当前列表版本哈希值不一致时,获取第一资源哈希值,第一资源哈希值是第一静态资源标识在当前资源信息列表对应的资源哈希值,获取第二资源哈希值,第二资源哈希值是第一静态资源标识在初始资源信息列表对应的资源哈希值,当第一资源哈希值和第二资源哈希值不一致时,确定第一静态资源标识为待更新静态资源标识,将第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取哈希值算法,根据哈希值算法对目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种静态资源缓存方法,所述方法应用于终端,所述方法包括:
获取应用程序的启动指令,所述启动指令用于指示启动所述应用程序;
根据所述启动指令向接口服务器请求当前资源信息列表,所述当前资源信息列表存在对应的当前列表版本哈希值,所述当前资源信息列表中包括静态资源标识、所述静态资源标识对应的静态资源路径以及所述静态资源标识对应的当前资源哈希值;
获取本地缓存的初始资源信息列表,获取所述初始资源信息列表对应的初始列表版本哈希值;
当所述初始列表版本哈希值与所述当前列表版本哈希值不一致时,获取第一资源哈希值,所述第一资源哈希值是第一静态资源标识在所述当前资源信息列表对应的资源哈希值;
获取第二资源哈希值,所述第二资源哈希值是所述第一静态资源标识在所述初始资源信息列表对应的资源哈希值;
当所述第一资源哈希值和所述第二资源哈希值不一致时,确定所述第一静态资源标识为待更新静态资源标识,将所述第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径;
将所述待更新静态资源路径通过资源加载请求发送至静态资源服务器,所述资源加载请求用于指示所述静态资源服务器根据所述待更新静态资源路径获取并返回对应的目标静态资源;
对返回的所述目标静态资源进行哈希值计算,得到对应的目标资源哈希值;
当所述目标资源哈希值和对应的所述当前资源哈希值一致时,缓存所述目标静态资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述启动指令向渲染服务器请求网页运行文件,所述网页运行文件是所述渲染服务器根据网页代码文件进行虚拟树构建得到的;
从缓存的静态资源中获取所述网页运行文件所需的网页运行静态资源,根据所述网页运行静态资源执行所述网页运行文件,渲染得到目标网页。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
拦截加载所述应用程序网页的请求;
对所述请求进行分析,确定所述请求指定的静态资源的资源哈希值;
根据所述请求指定的静态资源的资源哈希值查找本地缓存对应的静态资源路径;
若查找到的所述静态资源路径无效,则发送静态资源获取请求至所述静态资源服务器,以使所述静态资源服务器根据所述静态资源获取请求返回对应的第一静态资源;
接收并缓存所述第一静态资源。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述应用程序对应的项目源代码;
利用资源打包程序对所述项目源代码进行构建,得到资源信息列表、网页运行文件和静态资源;
将所述资源信息列表部署至所述接口服务器中,将所述网页运行文件部署至渲染服务器中,将所述静态资源部署至所述静态资源服务器中,所述资源信息列表中包括所述静态资源部署到所述静态资源服务器对应的静态资源路径。
5.根据权利要求1所述的方法,其特征在于,所述对返回的所述目标静态资源进行哈希值计算,得到对应的目标资源哈希值,包括:
获取哈希值算法;
根据所述哈希值算法对所述目标静态资源进行哈希值计算,得到对应的目标资源哈希值。
6.一种静态资源缓存***,其特征在于,所述***包括:
终端,用于获取应用程序的启动指令,所述启动指令用于指示启动所述应用程序,发送所述启动指令至接口服务器;
所述接口服务器,用于接收所述启动指令,根据所述启动指令请求当前资源信息列表,所述当前资源信息列表存在对应的当前列表版本哈希值,所述当前资源信息列表中包括静态资源标识、所述静态资源标识对应的静态资源路径以及所述静态资源标识对应的当前资源哈希值;
所述终端,用于接收所述当前资源信息列表,获取本地缓存的初始资源信息列表,获取所述初始资源信息列表对应的初始列表版本哈希值,当所述初始列表版本哈希值与所述当前列表版本哈希值不一致时,获取第一资源哈希值,所述第一资源哈希值是第一静态资源标识在所述当前资源信息列表对应的资源哈希值,获取第二资源哈希值,所述第二资源哈希值是所述第一静态资源标识在所述初始资源信息列表对应的资源哈希值,当所述第一资源哈希值和所述第二资源哈希值不一致时,确定所述第一静态资源标识为待更新静态资源标识,将所述第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径,将所述待更新静态资源路径通过资源加载请求发送至静态资源服务器;
所述静态资源服务器,用于接收所述资源加载请求,根据所述资源加载请求中的待更新静态资源路径加载并返回对应的目标静态资源至所述终端;
所述终端,用于接收返回的目标静态资源,对所述目标静态资源进行哈希值计算,得到对应的目标资源哈希值,当所述目标资源哈希值和对应的所述当前资源哈希值一致时,缓存所述目标静态资源。
7.一种静态资源缓存装置,其特征在于,所述装置包括:
启动指令获取模块,用于获取应用程序的启动指令,启动指令用于指示启动应用程序;
当前资源信息列表请求模块,用于根据所述启动指令向接口服务器请求当前资源信息列表,所述当前资源信息列表存在对应的当前列表版本哈希值,所述当前资源信息列表中包括静态资源标识、所述静态资源标识对应的静态资源路径以及所述静态资源标识对应的当前资源哈希值;
初始资源信息列表获取模块,用于获取本地缓存的初始资源信息列表,获取所述初始资源信息列表对应的初始列表版本哈希值,当所述初始列表版本哈希值与所述当前列表版本哈希值不一致时,获取第一资源哈希值,所述第一资源哈希值是第一静态资源标识在所述当前资源信息列表对应的资源哈希值,获取第二资源哈希值,所述第二资源哈希值是所述第一静态资源标识在所述初始资源信息列表对应的资源哈希值,当所述第一资源哈希值和所述第二资源哈希值不一致时,确定所述第一静态资源标识为待更新静态资源标识,将所述第一静态资源标识对应的第一静态资源路径确定为待更新静态资源路径;
资源加载请求发送模块,用于将所述待更新静态资源路径通过资源加载请求发送至静态资源服务器,所述资源加载请求用于指示所述静态资源服务器根据所述待更新静态资源路径获取并返回对应的目标静态资源;
资源哈希值计算模块,用于对返回的所述目标静态资源进行哈希值计算,得到对应的目标资源哈希值;
目标静态资源缓存模块,用于当所述目标资源哈希值和对应的所述当前资源哈希值一致时,缓存所述目标静态资源。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910924847.1A CN110866198B (zh) | 2019-09-27 | 2019-09-27 | 静态资源缓存方法、***、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910924847.1A CN110866198B (zh) | 2019-09-27 | 2019-09-27 | 静态资源缓存方法、***、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110866198A CN110866198A (zh) | 2020-03-06 |
CN110866198B true CN110866198B (zh) | 2022-10-28 |
Family
ID=69652439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910924847.1A Active CN110866198B (zh) | 2019-09-27 | 2019-09-27 | 静态资源缓存方法、***、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110866198B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506837B (zh) * | 2020-03-09 | 2023-07-25 | 百度在线网络技术(北京)有限公司 | 搜索方法、装置、电子设备及可读存储介质 |
CN111586170B (zh) * | 2020-05-07 | 2023-05-23 | 广州博冠信息科技有限公司 | 资源下载方法、装置、设备及计算机可读存储介质 |
CN111783005B (zh) * | 2020-07-08 | 2024-03-15 | 中国工商银行股份有限公司 | 显示网页的方法、装置和***、计算机***和介质 |
CN112016014B (zh) * | 2020-08-18 | 2023-12-26 | 北京达佳互联信息技术有限公司 | 网页显示、网页资源生成方法、装置、电子设备及介质 |
CN112073405B (zh) * | 2020-09-03 | 2024-02-06 | 中国平安财产保险股份有限公司 | 网页数据加载方法、装置、计算机设备及存储介质 |
CN112182334A (zh) * | 2020-09-27 | 2021-01-05 | 东风汽车有限公司 | 车载超文本标记语言文件处理方法、电子设备、服务器处理方法及服务器 |
CN112835578A (zh) * | 2021-01-28 | 2021-05-25 | 观脉科技(北京)有限公司 | 一种bundle文件生成方法和存储介质 |
CN113064609B (zh) * | 2021-03-05 | 2024-05-28 | 深圳市欢太科技有限公司 | 一种资源加载方法及客户端、服务器、存储介质 |
CN113568620B (zh) * | 2021-06-16 | 2023-08-22 | 杭州华橙软件技术有限公司 | 一种代码文件处理方法、装置、设备及介质 |
CN114221953A (zh) * | 2021-11-29 | 2022-03-22 | 平安证券股份有限公司 | 资源获取方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103269353A (zh) * | 2013-04-19 | 2013-08-28 | 网宿科技股份有限公司 | Web缓存回源优化方法及Web缓存*** |
CN104106052A (zh) * | 2012-02-16 | 2014-10-15 | 西里克斯***公司 | 用于主控的服务的连接租赁 |
CN104714965A (zh) * | 2013-12-16 | 2015-06-17 | 阿里巴巴集团控股有限公司 | 静态资源去重方法、静态资源管理方法及装置 |
CN106549995A (zh) * | 2015-09-21 | 2017-03-29 | 北京广密华安科技有限公司 | 对等网络中信息缓存与推送的方法、装置及*** |
CN106878370A (zh) * | 2016-09-19 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种本地缓存的更新方法和设备 |
CN108304207A (zh) * | 2018-03-01 | 2018-07-20 | 上海找钢网信息科技股份有限公司 | 混合app应用程序的资源更新方法及*** |
CN109246229A (zh) * | 2018-09-28 | 2019-01-18 | 网宿科技股份有限公司 | 一种分发资源获取请求的方法和装置 |
CN109995834A (zh) * | 2017-12-30 | 2019-07-09 | ***通信集团贵州有限公司 | 大流量数据处理方法、装置、计算设备及存储介质 |
CN110263275A (zh) * | 2019-06-14 | 2019-09-20 | 深圳前海桔子信息技术有限公司 | 一种访问网页的方法、装置、移动终端和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6941512B2 (en) * | 2001-09-10 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Dynamic web content unfolding in wireless information gateways |
US8631394B2 (en) * | 2011-01-13 | 2014-01-14 | Facebook, Inc. | Static resource processing |
CN107315791A (zh) * | 2017-06-14 | 2017-11-03 | 广州酷狗计算机科技有限公司 | 静态资源缓存方法、装置及计算机可读存储介质 |
CN107992557A (zh) * | 2017-11-28 | 2018-05-04 | 平安养老保险股份有限公司 | 静态资源更新方法、装置、存储介质和计算机设备 |
-
2019
- 2019-09-27 CN CN201910924847.1A patent/CN110866198B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104106052A (zh) * | 2012-02-16 | 2014-10-15 | 西里克斯***公司 | 用于主控的服务的连接租赁 |
CN103269353A (zh) * | 2013-04-19 | 2013-08-28 | 网宿科技股份有限公司 | Web缓存回源优化方法及Web缓存*** |
CN104714965A (zh) * | 2013-12-16 | 2015-06-17 | 阿里巴巴集团控股有限公司 | 静态资源去重方法、静态资源管理方法及装置 |
CN106549995A (zh) * | 2015-09-21 | 2017-03-29 | 北京广密华安科技有限公司 | 对等网络中信息缓存与推送的方法、装置及*** |
CN106878370A (zh) * | 2016-09-19 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种本地缓存的更新方法和设备 |
CN109995834A (zh) * | 2017-12-30 | 2019-07-09 | ***通信集团贵州有限公司 | 大流量数据处理方法、装置、计算设备及存储介质 |
CN108304207A (zh) * | 2018-03-01 | 2018-07-20 | 上海找钢网信息科技股份有限公司 | 混合app应用程序的资源更新方法及*** |
CN109246229A (zh) * | 2018-09-28 | 2019-01-18 | 网宿科技股份有限公司 | 一种分发资源获取请求的方法和装置 |
CN110263275A (zh) * | 2019-06-14 | 2019-09-20 | 深圳前海桔子信息技术有限公司 | 一种访问网页的方法、装置、移动终端和存储介质 |
Non-Patent Citations (1)
Title |
---|
大数据时代档案信息资源共享平台数据处理的优化;金秀凤;《档案管理》;20181115;第29-32页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110866198A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110866198B (zh) | 静态资源缓存方法、***、装置、计算机设备和存储介质 | |
CN110008118B (zh) | 页面数据测试方法、装置、计算机设备和存储介质 | |
CN109814854B (zh) | 项目框架生成方法、装置、计算机设备和存储介质 | |
CN108829477B (zh) | 界面跳转方法、装置、计算机设备和存储介质 | |
CN109361628B (zh) | 报文组装方法、装置、计算机设备和存储介质 | |
CN108959384B (zh) | 网页数据获取方法、装置、计算机设备和存储介质 | |
CN108418797B (zh) | 网页访问方法、装置、计算机设备和存储介质 | |
CN112000903B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN112637008B (zh) | 链路模拟测试方法、装置、***、计算机设备和存储介质 | |
CN112380130A (zh) | 基于调用依赖关系的应用测试方法和装置 | |
CN111083054B (zh) | 路由配置处理方法、装置、计算机设备和存储介质 | |
CN112527357A (zh) | 服务热加载更新方法、装置、计算机设备和存储介质 | |
CN112241298A (zh) | 页面显示方法及装置、存储介质、电子装置 | |
CN110362341B (zh) | 基于微服务架构的业务管理方法、装置、设备和存储介质 | |
CN111597422A (zh) | 埋点映射方法、装置、计算机设备和存储介质 | |
CN111597490A (zh) | Web指纹识别方法、装置、设备及计算机存储介质 | |
CN111782244A (zh) | 配置文件的更新方法、装置、计算机设备及存储介质 | |
CN111381830A (zh) | 程序中的数据请求处理方法、装置和计算机设备 | |
CN108920355B (zh) | 打点事件信息采集方法、装置、计算机设备和存储介质 | |
CN108897772B (zh) | 数据源补充方法、装置、计算机设备和存储介质 | |
CN111191235A (zh) | 可疑文件分析方法、装置和计算机可读存储介质 | |
CN108460116B (zh) | 搜索方法、装置、计算机设备、存储介质及搜索*** | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN115640471A (zh) | 短链接生成方法、装置、计算机设备及存储介质 | |
CN114489698A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |