CN106933614B - 一种单页面应用升级方法及装置 - Google Patents
一种单页面应用升级方法及装置 Download PDFInfo
- Publication number
- CN106933614B CN106933614B CN201511030920.9A CN201511030920A CN106933614B CN 106933614 B CN106933614 B CN 106933614B CN 201511030920 A CN201511030920 A CN 201511030920A CN 106933614 B CN106933614 B CN 106933614B
- Authority
- CN
- China
- Prior art keywords
- version number
- page application
- rendering script
- page
- data request
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44584—Portable applications, i.e. making applications self-contained, e.g. U3 standard
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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
技术领域
本发明涉及互联网通信领域,具体而言,涉及一种单页面应用升级方法及装置。
背景技术
单页面应用是只有一张web(互联网)页面的应用,单页面应用具有快速发布的特点,一般每隔几天或一周就会发布一个版本,当发布新版本的单页面应用时,需要对旧版本的单页面应用进行升级。
当前,相关技术中提供了一种单页面应用升级方法,包括:当用户登录单页面应用的页面时,前端发送该单页面应用的版本号给服务器。服务器获取该单页面应用的最新版本号,比较该最新版本号与前端发送的版本号是否相同,并在比较出两者不相同时,获取该最新版本号对应的该单页面应用的全部资源数据,将获取的全部资源数据发送给前端。前端根据服务器发送的全部资源数据对该单页面应用进行升级。
由于单页面应用的版本更新频繁,每次更新可能只改变单页面应用中的部分数据,上述相关技术每次对单页面应用升级时,服务器都要下发最新版本的全部资源数据,如此会浪费大量的数据流量,且在网络环境差时传输速度很慢,导致单页面应用的升级效率很低。
发明内容
有鉴于此,本发明实施例的目的在于提供一种单页面应用升级方法及装置,实现每次升级时只从服务端获取渲染脚本对应的差分资源文件,节省数据流量,且传输速度快,提高了单页面应用的升级效率。
第一方面,本发明实施例提供了一种单页面应用升级方法,所述方法包括:
发送单页面应用对应的数据请求给服务端,所述数据请求包括本地缓存的所述单页面应用的渲染脚本的版本号;
接收所述服务端根据所述版本号返回的升级响应信息;
若所述升级响应信息包括差分资源文件,则根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级,包括:
根据所述差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;
根据所述新的渲染脚本和本地缓存的所述单页面应用的静态资源,生成所述单页面应用对应的升级后的资源文件。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,若所述升级响应信息还包括最新版本的渲染脚本的长度值和消息摘要算法md5值;所述方法还包括:
通过md5算法对生成的所述新的渲染脚本进行运算得到所述新的渲染脚本的md5值,及获取所述新的渲染脚本的长度值;
根据生成的所述md5值、获取的所述长度值及所述升级响应信息包括的md5值和长度值,对所述新的渲染脚本进行版本验证;
若验证失败,则向所述服务端发送获取差分资源文件的请求。
结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述发送单页面应用对应的数据请求给服务端之前,还包括:
当首次访问单页面应用的页面时,从服务端获取所述单页面应用的全部资源文件;
从所述全部资源文件中提取不发生变化的部分资源文件作为所述单页面应用的静态资源,将所述静态资源固化存储在本地;
将所述全部资源文件中除所述静态资源外的资源文件确定为所述单页面应用的渲染脚本,将所述渲染脚本缓存在本地缓存中。
结合第一方面,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述升级响应信息包括页面数据,所述方法还包括:
对所述单页面应用进行升级后,根据本地缓存的所述单页面应用的静态资源和升级后的渲染脚本,对所述页面数据进行渲染,显示升级后所述单页面应用的页面。
结合第一方面,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述升级响应信息包括用于指示当前已缓存最新版本的指示信息和页面数据,所述方法还包括:
根据本地缓存的所述单页面应用的渲染脚本和静态资源,渲染所述页面数据,显示所述单页面应用的页面。
第二方面,本发明实施例提供了一种单页面应用升级方法,所述方法包括:
接收前端发送的单页面应用对应的数据请求,所述数据请求包括所述前端缓存的所述单页面应用的渲染脚本的版本号;
获取所述单页面应用的渲染脚本的最新版本号;
根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息;
向所述前端发送所述升级响应信息,以使所述前端根据所述升级响应信息确定缓存所述单页面应用的最新版本的资源文件。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息,包括:
比较所述最新版本号和所述数据请求包括的版本号是否相同;
如果是,则生成用于指示当前已缓存最新版本的指示信息,将所述指示信息确定为升级响应信息;
如果否,则根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,将所述差分资源文件确定为升级响应信息。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,包括:
根据所述最新版本号获取最新版本的渲染脚本;
根据所述数据请求包括的版本号获取对应版本的渲染脚本;
对所述数据请求包括的版本号对应的渲染脚本和所述最新版本的渲染脚本进行差分运算,得到所述数据请求包括的版本号对应的差分资源文件。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,包括:
根据所述最新版本号和所述数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从所述数据请求包括的版本号到所述最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;
将获取的各差分资源子文件组成所述数据请求包括的版本号对应的差分资源文件。
结合第二方面,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,所述方法还包括:
获取所述最新版本号对应的最新版本的渲染脚本的长度值;
通过md5算法对所述最新版本的渲染脚本进行运算,得到所述最新版本的渲染脚本的md5值;
获取所述单页面应用的页面数据;
将所述长度值、所述md5值和所述页面数据添加到所述升级响应信息中。
第三方面,本发明实施例提供了一种单页面应用升级装置,所述装置包括:
发送模块,用于发送单页面应用对应的数据请求给服务端,所述数据请求包括本地缓存的所述单页面应用的渲染脚本的版本号;
接收模块,用于接收所述服务端根据所述版本号返回的升级响应信息;
升级模块,用于当所述升级响应信息包括差分资源文件时,根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级。
结合第三方面,本发明实施例提供了上述第三方面的第一种可能的实现方式,其中,所述升级模块包括:
第一生成单元,用于根据所述差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;
第二生成单元,用于根据所述新的渲染脚本和本地缓存的所述单页面应用的静态资源,生成所述单页面应用对应的升级后的资源文件。
结合第三方面的第一种可能的实现方式,本发明实施例提供了上述第三方面的第二种可能的实现方式,其中,若所述升级响应信息还包括最新版本的渲染脚本的长度值和消息摘要算法md5值;所述装置还包括:
验证模块,用于通过md5算法对生成的所述新的渲染脚本进行运算得到所述新的渲染脚本的md5值,及获取所述新的渲染脚本的长度值;根据生成的所述md5值、获取的所述长度值及所述升级响应信息包括的md5值和长度值,对所述新的渲染脚本进行版本验证;若验证失败,则向所述服务端发送获取差分资源文件的请求。
结合第三方面,本发明实施例提供了上述第三方面的第三种可能的实现方式,其中,所述装置还包括:
存储模块,用于当首次访问单页面应用的页面时,从服务端获取所述单页面应用的全部资源文件;从所述全部资源文件中提取不发生变化的部分资源文件作为所述单页面应用的静态资源,将所述静态资源固化存储在本地;将所述全部资源文件中除所述静态资源外的资源文件确定为所述单页面应用的渲染脚本,将所述渲染脚本缓存在本地缓存中。
结合第三方面,本发明实施例提供了上述第三方面的第四种可能的实现方式,其中,所述升级响应信息包括页面数据,所述装置还包括:
第一显示模块,用于对所述单页面应用进行升级后,根据本地缓存的所述单页面应用的静态资源和升级后的渲染脚本,对所述页面数据进行渲染,显示升级后所述单页面应用的页面。
结合第三方面,本发明实施例提供了上述第三方面的第五种可能的实现方式,其中,所述升级响应信息包括用于指示当前已缓存最新版本的指示信息和页面数据,所述装置还包括:
第二显示模块,用于根据本地缓存的所述单页面应用的渲染脚本和静态资源,渲染所述页面数据,显示所述单页面应用的页面。
第四方面,本发明实施例提供了一种单页面应用升级装置,所述装置包括:
接收模块,用于接收前端发送的单页面应用对应的数据请求,所述数据请求包括所述前端缓存的所述单页面应用的渲染脚本的版本号;
获取模块,用于获取所述单页面应用的渲染脚本的最新版本号;
生成模块,用于根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息;
发送模块,用于向所述前端发送所述升级响应信息,以使所述前端根据所述升级响应信息确定缓存所述单页面应用的最新版本的资源文件。
结合第四方面,本发明实施例提供了上述第四方面的第一种可能的实现方式,其中,所述生成模块包括:
比较单元,用于比较所述最新版本号和所述数据请求包括的版本号是否相同;
第一生成单元,用于当所述比较单元比较出所述最新版本号和所述数据请求包括的版本号相同时,生成用于指示当前已缓存最新版本的指示信息,将所述指示信息确定为升级响应信息;
第二生成单元,用于如果当所述比较单元比较出所述最新版本号和所述数据请求包括的版本号不相同时,根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,将所述差分资源文件确定为升级响应信息。
结合第四方面的第一种可能的实现方式,本发明实施例提供了上述第四方面的第二种可能的实现方式,其中,所述第二生成单元包括:
第一获取子单元,用于根据所述最新版本号获取最新版本的渲染脚本;根据所述数据请求包括的版本号获取对应版本的渲染脚本;
差分运算子单元,用于对所述数据请求包括的版本号对应的渲染脚本和所述最新版本的渲染脚本进行差分运算,得到所述数据请求包括的版本号对应的差分资源文件。
结合第四方面的第一种可能的实现方式,本发明实施例提供了上述第四方面的第三种可能的实现方式,其中,所述第二生成单元包括:
第二获取子单元,用于根据所述最新版本号和所述数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从所述数据请求包括的版本号到所述最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;
组成子单元,用于将获取的各差分资源子文件组成所述数据请求包括的版本号对应的差分资源文件。
结合第四方面,本发明实施例提供了上述第四方面的第四种可能的实现方式,其中,所述装置还包括:
添加模块,用于获取所述最新版本号对应的最新版本的渲染脚本的长度值;通过md5算法对所述最新版本的渲染脚本进行运算,得到所述最新版本的渲染脚本的md5值;获取所述单页面应用的页面数据;将所述长度值、所述md5值和所述页面数据添加到所述升级响应信息中。
在本发明实施例提供的方法及装置中,发送单页面应用对应的数据请求给服务端,数据请求包括本地缓存的单页面应用的渲染脚本的版本号;接收服务端根据版本号返回的升级响应信息;若升级响应信息包括差分资源文件,则根据差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。本发明前端本地缓存了单页面应用的静态资源和渲染脚本,每次升级时只从服务端获取渲染脚本对应的差分资源文件,而差分资源文件的数据量非常小,如此每次升级时服务端只需要下发差分资源文件,大大节省了数据流量,且传输速度快,提高了单页面应用的升级效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1A示出了本发明实施例1所提供的一种单页面应用升级方法的信令交互图;
图1B示出了本发明实施例1所提供的一种前端与服务端之间交互的结构示意图;
图2示出了本发明实施例2所提供的一种单页面应用升级装置的装置结构图;
图3示出了本发明实施例3所提供的一种单页面应用升级装置的装置结构图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到单页面应用的版本更新频繁,且每次更新可能只改变单页面应用中的部分数据,而相关技术每次对单页面应用升级时,服务器都要下发最新版本的全部资源数据,如此会浪费大量的数据流量,且在网络环境差时传输速度很慢,导致单页面应用的升级效率很低。基于此,本发明实施例提供了一种单页面应用升级方法及装置。下面通过实施例进行描述。
实施例1
本发明实施例提供了一种单页面应用升级方法。单页面应用为只有一个web页面的应用,如网页邮件即为一种单页面应用。单页面应用具有快速发布、更新频繁的特点,在单页面应用发布新的版本时,可以通过本发明实施例提供的方法来对单页面应用进行升级。
单页面应用一般采用web app(基于web的系统或应用)或者hybrid app(混合模式移动应用)的方式开发。对于采用web app开发的单页面应用,可以通过浏览器客户端来登录该单页面应用。而采用hybrid app开发的单页面应用在终端本地有单页面应用对应的单页面客户端,可以通过该单页面客户端来登录该单页面应用。在本发明实施例中,将浏览器客户端及单页面客户端统称为前端,对于上述两种方式开发的单页面应用,前端都可以通过本发明实施例提供的升级方法来实现单页面应用的升级。
在用户通过前端首次访问单页面应用的页面时,前端从服务端获取单页面应用的全部资源文件,从全部资源文件中提取不发生变化的部分资源文件作为单页面应用的静态资源,将静态资源固化存储在本地,将全部资源文件中除静态资源外的资源文件确定为单页面应用的渲染脚本,将渲染脚本缓存在本地缓存中。
单页面应用的全部资源文件中包括图片、CSS(Cascading Style Sheets,层叠样式表)、基础脚本框架和渲染整个页面的脚本字符串等。其中,图片、CSS和基础脚本框架等一般不会发生改变,而渲染整个页面的脚本字符串可能会经常发生改变。前端提取全部资源文件中的图片、CSS和基础脚本框架等组成单页面应用的静态资源,将全部资源文件中剩余的渲染整个页面的脚本字符串等作为单页面应用的渲染脚本。如此将单页面应用的全部资源文件中的变化部分和不变化部分进行分离,后续在单页面升级时,只需从服务端获取变化部分即可。
对于按照不同方式开发的单页面应用,前端将静态资源固化存储在本地的方式可以不同。当前端为浏览器客户端时,浏览器客户端将不发生变化的部分提取出来,作为静态资源固定存储在终端本地,或者将静态资源存储在CDN(Content Delivery Network,内容分发网络)服务器中。当前端为单页面客户端时,单页面客户端可以将静态资源直接放到本地单页面客户端的安装文件中。
另外,单页面应用的全部资源文件中包括单页面应用的版本号,前端将该版本号作为经常发生变化的渲染脚本的版本号,将该版本号存储在渲染脚本中。
在前端存储单页面应用的静态资源和渲染脚本之后,每次通过前端登录单页面应用的页面时,通过如下步骤101-107的操作来确定该单页面应用是否发布了新版本,并在确定发布了新版本时,对单页面应用进行升级,如图1A所示。
步骤101:前端发送单页面应用对应的数据请求给服务端,该数据请求包括本地缓存的单页面应用的渲染脚本的版本号。
上述数据请求中还包括单页面应用的应用标识,该应用标识可以为单页面应用的页面地址或该单页面应用的名称等。
当用户通过前端登录单页面应用的页面时,前端获取该单页面应用的应用标识,从本地缓存的该单页面应用的渲染脚本中获取该渲染脚本的版本号。前端发送数据请求给服务端,在该数据请求中携带获取的该单页面应用的应用标识和渲染脚本的版本号。
步骤102:服务端接收前端发送的该单页面应用对应的数据请求,获取该单页面应用的渲染脚本的最新版本号。
在本发明实施例中,技术人员首次开发一个单页面应用后,可以将该单页面应用的全部资源文件上传到服务端,服务端将该全部资源文件分离为静态资源和渲染脚本,分别存储该单页面应用的应用标识与静态资源的对应关系,及应用标识、渲染脚本与存储时间的对应关系。之后技术人员对已存在的单页面应用进行再次开发时,可以仅对该单页面应用的渲染脚本进行改进,如此产生新版本的单页面应用时,技术人员将新版本的渲染脚本上传给服务端。服务端为该新版本的渲染脚本分配新的版本号,将该新的版本号添加到该新版本的渲染脚本中,然后将当前时间作为存储该新版本的渲染脚本的存储时间,根据该单页面应用的应用标识将该新版本的渲染脚本及存储时间存储在应用标识、渲染脚本与存储时间的对应关系中。
服务端接收到前端发送的数据请求后,根据该数据请求包括的单页面应用的应用标识,从应用标识、渲染脚本与存储时间的对应关系中获取该应用标识对应的每个存储时间,从获取的每个存储时间中确定离当前时间最近的存储时间,从应用标识、渲染脚本与存储时间的对应关系中获取该离当前时间最近的存储时间对应的渲染脚本,获取该渲染脚本中的版本号,将该版本号确定为该单页面应用的渲染脚本的最新版本号。
在本发明实施例,服务端还可以按照预设编号顺序为单页面应用每个版本的渲染脚本分配版本号。该预设编号顺序可以为按照数字从小到大的顺序进行分配,或者按照字母从前往后的顺序分配。若按照数字从小到大的顺序进行分配,则服务端可以获取数字最大的版本号作为单页面应用的渲染脚本的最新版本号。若按照字母从前往后的顺序分配,则服务端可以获取字母最大的版本号作为单页面应用的渲染脚本的最新版本号。
另外,服务端还可以存储应用标识与最新版本号的对应关系,接收到前端发送的数据请求后,根据该数据请求包括的单页面应用的应用标识,从应用标识与最新版本号的对应关系中,获取该单页面应用的渲染脚本的最新版本号。
步骤103:服务端根据获取的最新版本号和该数据请求包括的版本号,生成升级响应信息。
服务端比较获取的最新版本号和该数据请求包括的版本号是否相同;如果是,则生成用于指示当前已缓存最新版本的指示信息,将该指示信息确定为升级响应信息;如果否,则根据最新版本号和该数据请求包括的版本号,生成该数据请求包括的版本号对应的差分资源文件,将该差分资源文件确定为升级响应信息。
上述差分资源文件为最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间发生改变的部分资源文件。在本发明实施例中可以直接对最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本进行差分运算来生成差分资源文件,具体包括:
服务端根据最新版本号获取最新版本的渲染脚本;根据数据请求包括的版本号获取对应版本的渲染脚本;对该数据请求包括的版本号对应的渲染脚本和最新版本的渲染脚本进行差分运算,得到该数据请求包括的版本号对应的差分资源文件。
服务端查询存储的该单页面应用的每个渲染脚本,从每个渲染脚本中获取包含该最新版本号的渲染脚本,以及从每个渲染脚本中获取包含该数据请求包括的版本号对应的渲染脚本。
在本发明实施例中,可以通过diff命令比较文本文件等差量生成算法来生成差分资源文件。为了便于理解生成差分资源文件的过程,下面举例进行说明。例如,假设最新版本号为2.0,版本2.0的渲染脚本为字符串“farests”,该数据请求包括的版本号为1.0,版本1.0对应的渲染脚本为字符串“fortest”,则通过diff命令对版本2.0的渲染脚本“farests”和版本1.0的渲染脚本“fortest”进行差分运算,差分运算的结果代码如下所示,其中equal表示相等,replace表示需要替换,delete表示需要删除,insert表示需要插入,如下代码中数组的第2和第3个值表示版本1.0的字符串的下标,数组的最后2个值表示版本2.0字符串的下标。
{
{'equal',0,1,0,1};
{'replace',1,2,1,2};
{'equal',2,3,2,3};
{'delete',3,4,3,3};
{'equal',4,7,3,6};
{'insert',7,7,6,7};
}
其中,{'equal',0,1,0,1}表示版本1.0的字符串“fortest”从下标0到下标1的字符f与版本2.0的字符串“farests”从下标0到下标1的字符f是一样的。{'replace',1,2,1,2}表示版本1.0的字符串“fortest”从下标1到下标2的字符o,需要用版本2.0的字符串“farests”中从下标1到下标2的字符a进行替换。{'equal',2,3,2,3}表示版本1.0的字符串“fortest”从下标2到下标3的字符r与版本2.0的字符串“farests”从下标2到下标3的字符r是一样的。{'delete',3,4,3,3}表示版本1.0的字符串“fortest”中从下标3到下标4的字符t需要删除。{'equal',4,7,3,6}表示版本1.0的字符串“fortest”从下标4到下标7的字符est与版本2.0的字符串“farests”从下标3到下标6的字符est是一样的。{'insert',7,7,6,7}表示在版本1.0的字符串“fortest”的最后插入版本2.0的字符串中“farests”从下标6到下标7的字符s。
进行上述差分运算之后,可以将上述代码所示的差分运算结果作为最新版本2.0的渲染脚本与该数据请求包括的版本1.0对应的渲染脚本之间的差分资源文件。
但在实际操作中,每次发布新版本时,单页面应用的渲染脚本中发生变化的字符必然很多,如果按上述举例说明中将差分运算结果直接作为差分资源文件,则该差分资源文件的数据量很大,下发该差分资源文件会占用大量的数据流量,而且前端解析该差分资源文件的速度很慢,导致升级效率很低。因此本发明实施例中可以先对差分运算结果进行优化,剔除掉“equal”和“delete”的相关内容,以缩小差分资源文件的数据量。
下面结合上述举例的内容,进一步说明上述剔除操作的具体过程。例如,将上述差分运算结果的代码转换为以下格式的数组:
{[0,1],'a',[2,1],[4,3],'s'}
上述数组表示的含义为:版本1.0“fortest”中下标为0长度为1的内容+'a'+“fortest”中下标为2长度为1的内容+“fortest”中下标为4长度为3的内容+'s'。
通过字符串复制函数substr()来调用版本1.0“fortest”并表达上述数组的含义,可以为:
fortest.substr(0,1)+‘a’+fortest.substr(2,1)+fortest.substr(4,3)+‘s’
=‘f’+‘a’+‘r’+‘est’+‘s’
=farests
上述转换得到的数组的数据量很小,可以将上述转换得到的数组作为差分资源文件,如此可以大大节省传输流量,且前端接收到该差分资源文件后,能够快速解析该差分资源文件,得到最新版本的渲染脚本,提高了单页面应用的升级效率。
在本发明实施例中,每当技术人员上传单页面应用的最新版本的渲染脚本时,服务端可以获取该最新版本之前上一个版本的渲染脚本,并生成该最新版本的渲染脚本与之前上一个版本的渲染脚本之间的差分资源子文件,并将该最新版本的渲染脚本的版本号、之前上一个版本的渲染脚本的版本号和该差分资源子文件存储在相邻版本号与差分资源子文件的对应关系中。
上述相邻版本号与差分资源子文件的对应关系如表1所示,版本1.0与版本0.0之间的差分资源子文件为File001,版本2.0与版本1.0之间的差分资源子文件为File002。
表1
在生成最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间的差分资源文件时,可以获取最新版本号与该数据请求包括的版本号之间对应的多个差分资源子文件,将获取的多个差分资源子文件组成最终的差分资源文件。具体包括:
服务端根据最新版本号和该数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从数据请求包括的版本号到最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;将获取的各差分资源子文件组成数据请求包括的版本号对应的差分资源文件。
例如,假设最新版本号为2.0,该数据请求包括的版本号为0.0,则,从如表1所示的相邻版本号与差分资源子文件的对应关系中,获取版本0.0与版本1.0对应的差分资源子文件File001,以及获取版本1.0与版本2.0对应的差分资源子文件File002,将差分资源子文件File001和File002组成版本2.0的渲染脚本与版本0.0的渲染脚本之间的差分资源文件。
在本发明实施例中,生成差分资源文件,并将差分资源文件作为升级响应信息之后,服务端还获取最新版本号对应的最新版本的渲染脚本的长度值;通过md5(MessageDigest Algorithm5,信息摘要算法5)算法对最新版本的渲染脚本进行运算,得到最新版本的渲染脚本的md5值;根据该单页面应用的应用标识,获取该单页面应用的页面数据;将该长度值、md5值和页面数据添加到升级响应信息中。
步骤104:服务端向前端发送该升级响应信息。
由于最新版本的单页面应用并没有经过用户使用测试,很有可能在用户使用的过程中出现不符合用户使用需求的问题,从而导致单页面应用的用户流失。为了解决这一问题,本发明实施例引入灰度发布规则,通过预设灰度发布规则来使符合该灰度发布规则的用户先使用最新版本的单页面应用,并采集这部分用户的使用记录,根据这部分用户的使用记录对最新版本的单页面应用进行完善。同时还需预设该灰度发布规则的效用截止时间,在该效用截止时间之后再使其他用户使用该最新版本的单页面应用,以防止用户流失。
预设的灰度发布规则可以规定用户的年龄、地理位置及职业等信息,如可以预设灰度规则为使25岁至30岁之间且在北京工作的律师先使用该最新版本的单页面应用。且前端在发送给服务端的数据请求中需携带用户的用户标识,以使服务端可以根据用户标识获取用户的用户信息,以确定该用户是否符合预设的灰度发布规则。
在单页面应用发布新版本,且服务端在向前端发送升级响应信息之前,服务器首先根据接收前端发送数据请求的接收时间,判断该接收时间是否位于预设的灰度发布规则的效用截止时间之后,如果是,则在该升级响应信息中携带差分资源文件、最新版本的渲染脚本的长度值和md5值。如果该接收时间在效用截止时间之前,则根据数据请求中包括的用户标识,获取该用户标识对应的用户信息,判断获取的用户信息是否符合预设的灰度发布规则,若符合,则在该升级响应信息中携带差分资源文件、最新版本的渲染脚本的长度值和md5值。若不符合,则只在该升级响应信息中携带该单页面应用的页面数据。
步骤105:前端接收服务端发送的该升级响应信息,判断该升级响应信息中是否包括差分资源文件,如果是,则执行步骤106,如果否,则执行步骤107。
前端接收服务端根据数据请求包括的版本号返回的升级响应信息,解析该升级响应信息,若解析出该升级响应信息包括差分资源文件,则后续执行步骤106的操作,否则执行步骤107的操作。
步骤106:前端根据该差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。
前端根据升级响应信息包括的差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;根据新的渲染脚本和本地缓存的单页面应用的静态资源,生成单页面应用对应的升级后的资源文件。
预设合并算法可以为服务端生成差分资源文件时所运用的差量生成运算的逆运算,也可以利用步骤103中提供的字符串复制函数substr()来对本地缓存的渲染脚本和差分资源文件包括的数组进行字符运算,以得到新的渲染脚本。然后将新的渲染脚本和本地缓存的静态资源组成该单页面应用对应的升级后的资源文件。
在通过上述方式生成新的渲染脚本后,为了确保对单页面应用升级的准确性,还需要对生成的新的渲染脚本进行验证,以确定生成的新的渲染脚本是否与服务端存储的最新版本的渲染脚本相同。具体验证过程如下:
通过md5算法对生成的新的渲染脚本进行运算得到新的渲染脚本的md5值,及获取新的渲染脚本的长度值;根据生成的md5值、获取的长度值及升级响应信息包括的md5值和长度值,对新的渲染脚本进行版本验证,即比较生成的md5值与升级响应信息包括的md5值是否相同,以及比较获取的长度值与升级响应信息包括的长度值是否相同,若均相同,则验证成功,确定生成的新的渲染脚本与服务端存储的最新版本的渲染脚本相同。若生成的md5值与升级响应信息包括的md5值不相同,或者获取的长度值与升级响应信息包括的长度值不相同,则验证失败,确定生成的新的渲染脚本与服务端中存储的最新版本的渲染脚本不同,此时前端向服务端发送获取差分资源文件的请求,以请求服务端重新下发最新版本的渲染脚本与本地缓存的渲染脚本之间的差分资源文件。
在本发明实施例中,前端完成对单页面应用的升级操作之后,还根据本地缓存的单页面应用的静态资源和升级后的渲染脚本,对升级响应信息包括的页面数据进行渲染,显示升级后该单页面应用的页面。
前端根据本地缓存的单页面应用的静态资源,通过字符串表达式计算函数eval()执行升级后的渲染脚本,对升级响应信息包括的页面数据进行渲染,显示升级后该单页面应用的页面。
步骤107:前端根据本地缓存的单页面应用的渲染脚本和静态资源,渲染页面数据,显示该单页面应用的页面。
当前端解析出升级响应信息中不包括差分资源文件时,解析该升级响应信息中是否包括用于指示当前已缓存最新版本的指示信息,如果包括,则根据该指示信息确定当前本地缓存的渲染脚本为最新版本的渲染脚本。
如图1B所示,本发明实施例中,前端在本地固化存储了静态资源,并采用本地缓存的方式缓存了渲染脚本,渲染脚本可以进行动态升级。服务端为前端开设了数据交互接口和渲染脚本升级接口,通过数据交互接口只交互页面数据,通过渲染脚本升级接口进行脚本升级。如此前端与服务端之间只进行页面数据的传输,并对渲染脚本的部分资源进行动态更新,静态资源不需要更新。且在无版本升级的情况下,前端与服务端之间只进行页面数据的传输,节省了用于传输页面资源的数据流量,加快了显示单页面应用的页面的显示速度。
在本发明实施例中,发送单页面应用对应的数据请求给服务端,数据请求包括本地缓存的单页面应用的渲染脚本的版本号;接收服务端根据版本号返回的升级响应信息;若升级响应信息包括差分资源文件,则根据差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。本发明前端本地缓存了单页面应用的静态资源和渲染脚本,每次升级时只从服务端获取渲染脚本对应的差分资源文件,而差分资源文件的数据量非常小,如此每次升级时服务端只需要下发差分资源文件,大大节省了数据流量,且传输速度快,提高了单页面应用的升级效率。
实施例2
参见图2,本发明实施例提供了一种单页面应用升级装置,该装置用于执行上述实施例1提供的单页面应用升级方法。具体包括:
发送模块201,用于发送单页面应用对应的数据请求给服务端,该数据请求包括本地缓存的单页面应用的渲染脚本的版本号;
接收模块202,用于接收服务端根据版本号返回的升级响应信息;
升级模块203,用于当升级响应信息包括差分资源文件时,根据差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。
升级模块203具体通过第一生成单元和第二生成单元来对单页面应用进行升级。
第一生成单元,用于根据差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;第二生成单元,用于根据新的渲染脚本和本地缓存的单页面应用的静态资源,生成单页面应用对应的升级后的资源文件。
若升级响应信息还包括最新版本的渲染脚本的长度值和消息摘要算法md5值;该装置还包括:
验证模块,用于通过md5算法对生成的新的渲染脚本进行运算得到新的渲染脚本的md5值,及获取新的渲染脚本的长度值;根据生成的md5值、获取的长度值及升级响应信息包括的md5值和长度值,对新的渲染脚本进行版本验证;若验证失败,则向服务端发送获取差分资源文件的请求。
在本发明实施例中,当首次访问单页面应用的页面时,还通过如下存储模块来存储该单页面应用的资源文件。存储模块,用于当首次访问单页面应用的页面时,从服务端获取单页面应用的全部资源文件;从全部资源文件中提取不发生变化的部分资源文件作为单页面应用的静态资源,将静态资源固化存储在本地;将全部资源文件中除静态资源外的资源文件确定为单页面应用的渲染脚本,将渲染脚本缓存在本地缓存中。
在本发明实施例中,该升级响应信息包括页面数据,该装置还包括:
第一显示模块,用于对单页面应用进行升级后,根据本地缓存的单页面应用的静态资源和升级后的渲染脚本,对页面数据进行渲染,显示升级后单页面应用的页面。
在本地已缓存了最新版本的渲染脚本时,升级响应信息包括用于指示当前已缓存最新版本的指示信息和页面数据,该装置还包括:
第二显示模块,用于根据本地缓存的单页面应用的渲染脚本和静态资源,渲染页面数据,显示单页面应用的页面。
在本发明实施例中,发送单页面应用对应的数据请求给服务端,数据请求包括本地缓存的单页面应用的渲染脚本的版本号;接收服务端根据版本号返回的升级响应信息;若升级响应信息包括差分资源文件,则根据差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。本发明前端本地缓存了单页面应用的静态资源和渲染脚本,每次升级时只从服务端获取渲染脚本对应的差分资源文件,而差分资源文件的数据量非常小,如此每次升级时服务端只需要下发差分资源文件,大大节省了数据流量,且传输速度快,提高了单页面应用的升级效率。
实施例3
参见图3,本发明实施例提供了一种单页面应用升级装置,该装置用于执行上述实施例1提供的单页面应用方法。该装置具体包括:
接收模块301,用于接收前端发送的单页面应用对应的数据请求,数据请求包括前端缓存的单页面应用的渲染脚本的版本号;
获取模块302,用于获取单页面应用的渲染脚本的最新版本号;
生成模块303,用于根据最新版本号和数据请求包括的版本号,生成升级响应信息;
发送模块304,用于向前端发送升级响应信息,以使前端根据升级响应信息确定缓存单页面应用的最新版本的资源文件。
上述生成模块303通过比较单元、第一生成单元和第二生成单元来生成升级响应信息。
比较单元,用于比较最新版本号和数据请求包括的版本号是否相同;第一生成单元,用于当比较单元比较出最新版本号和数据请求包括的版本号相同时,生成用于指示当前已缓存最新版本的指示信息,将指示信息确定为升级响应信息;第二生成单元,用于如果当比较单元比较出最新版本号和数据请求包括的版本号不相同时,根据最新版本号和数据请求包括的版本号,生成数据请求包括的版本号对应的差分资源文件,将差分资源文件确定为升级响应信息。
在本发明实施例中可以直接对最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本进行差分运算来生成差分资源文件,上述第二生成单元包括:
第一获取子单元,用于根据最新版本号获取最新版本的渲染脚本;根据数据请求包括的版本号获取对应版本的渲染脚本;
差分运算子单元,用于对数据请求包括的版本号对应的渲染脚本和最新版本的渲染脚本进行差分运算,得到数据请求包括的版本号对应的差分资源文件。
在本发明实施例中,在生成最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间的差分资源文件时,可以获取最新版本号与该数据请求包括的版本号之间对应的多个差分资源子文件,将获取的多个差分资源子文件组成最终的差分资源文件,第二生成单元包括:
第二获取子单元,用于根据最新版本号和数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从数据请求包括的版本号到最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;组成子单元,用于将获取的各差分资源子文件组成数据请求包括的版本号对应的差分资源文件。
在本发明实施例中,还可以通过添加模块在升级响应信息中添加页面数据及最新版本的渲染脚本的长度值和md5值。
添加模块,用于获取最新版本号对应的最新版本的渲染脚本的长度值;通过md5算法对最新版本的渲染脚本进行运算,得到最新版本的渲染脚本的md5值;获取单页面应用的页面数据;将长度值、md5值和页面数据添加到升级响应信息中。
在本发明实施例中,发送单页面应用对应的数据请求给服务端,数据请求包括本地缓存的单页面应用的渲染脚本的版本号;接收服务端根据版本号返回的升级响应信息;若升级响应信息包括差分资源文件,则根据差分资源文件、本地缓存的单页面应用的渲染脚本及静态资源,对单页面应用进行升级。本发明前端本地缓存了单页面应用的静态资源和渲染脚本,每次升级时只从服务端获取渲染脚本对应的差分资源文件,而差分资源文件的数据量非常小,如此每次升级时服务端只需要下发差分资源文件,大大节省了数据流量,且传输速度快,提高了单页面应用的升级效率。
本发明实施例所提供的单页面应用装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的模块、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程。
在本申请所提供的几个实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种单页面应用升级方法,其特征在于,所述方法包括:
发送单页面应用对应的数据请求给服务端,所述数据请求包括本地缓存的所述单页面应用的渲染脚本的版本号;
接收所述服务端根据所述版本号返回的升级响应信息;
若所述升级响应信息包括差分资源文件,则根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级;
其中,所述差分资源文件为最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间发生改变的部分资源文件,通过diff命令比较最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本生成差分运算结果,并将差分运算结果中用于表示相等的内容和用于表示需要删除的内容删除以生成所述差分资源文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级,包括:
根据所述差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;
根据所述新的渲染脚本和本地缓存的所述单页面应用的静态资源,生成所述单页面应用对应的升级后的资源文件。
3.根据权利要求2所述的方法,其特征在于,若所述升级响应信息还包括最新版本的渲染脚本的长度值和消息摘要算法md5值;所述方法还包括:
通过md5算法对生成的所述新的渲染脚本进行运算得到所述新的渲染脚本的md5值,及获取所述新的渲染脚本的长度值;
根据生成的所述md5值、获取的所述长度值及所述升级响应信息包括的md5值和长度值,对所述新的渲染脚本进行版本验证;
若验证失败,则重新向所述服务端发送获取差分资源文件的请求。
4.根据权利要求1所述的方法,其特征在于,所述发送单页面应用对应的数据请求给服务端之前,还包括:
当首次访问单页面应用的页面时,从服务端获取所述单页面应用的全部资源文件;
从所述全部资源文件中提取不发生变化的部分资源文件作为所述单页面应用的静态资源,将所述静态资源固化存储在本地;
将所述全部资源文件中除所述静态资源外的资源文件确定为所述单页面应用的渲染脚本,将所述渲染脚本缓存在本地缓存中。
5.根据权利要求1所述的方法,其特征在于,所述升级响应信息还包括页面数据,所述方法还包括:
对所述单页面应用进行升级后,根据本地缓存的所述单页面应用的静态资源和升级后的渲染脚本,对所述页面数据进行渲染,显示升级后所述单页面应用的页面,所述升级后的渲染脚本根据所述差分资源文件和本地缓存的所述单页面应用的渲染脚本生成。
6.根据权利要求1所述的方法,其特征在于,所述升级响应信息包括用于指示当前已缓存最新版本的指示信息和页面数据,所述方法还包括:
根据本地缓存的所述单页面应用的渲染脚本和静态资源,渲染所述页面数据,显示所述单页面应用的页面。
7.一种单页面应用升级方法,其特征在于,所述方法包括:
接收前端发送的单页面应用对应的数据请求,所述数据请求包括所述前端缓存的所述单页面应用的渲染脚本的版本号;
获取所述单页面应用的渲染脚本的最新版本号;
根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息,所述升级响应信息包括差分资源文件,所述差分资源文件为最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间发生改变的部分资源文件,通过diff命令比较最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本生成差分运算结果,并将差分运算结果中用于表示相等的内容和用于表示需要删除的内容删除以生成所述差分资源文件;
向所述前端发送所述升级响应信息,以使所述前端根据所述升级响应信息和本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级。
8.根据权利要求7所述的方法,其特征在于,所述根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息,包括:
比较所述最新版本号和所述数据请求包括的版本号是否相同;
如果不相同,则根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,将所述差分资源文件确定为升级响应信息。
9.根据权利要求8所述的方法,其特征在于,所述根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,包括:
根据所述最新版本号获取最新版本的渲染脚本;
根据所述数据请求包括的版本号获取对应版本的渲染脚本;
对所述数据请求包括的版本号对应的渲染脚本和所述最新版本的渲染脚本进行差分运算,得到所述数据请求包括的版本号对应的差分资源文件。
10.根据权利要求8所述的方法,其特征在于,所述根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,包括:
根据所述最新版本号和所述数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从所述数据请求包括的版本号到所述最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;
将获取的各差分资源子文件组成所述数据请求包括的版本号对应的差分资源文件。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
获取所述最新版本号对应的最新版本的渲染脚本的长度值;
通过md5算法对所述最新版本的渲染脚本进行运算,得到所述最新版本的渲染脚本的md5值;
获取所述单页面应用的页面数据;
将所述长度值、所述md5值和所述页面数据添加到所述升级响应信息中。
12.一种单页面应用升级装置,其特征在于,所述装置包括:
发送模块,用于发送单页面应用对应的数据请求给服务端,所述数据请求包括本地缓存的所述单页面应用的渲染脚本的版本号;
接收模块,用于接收所述服务端根据所述版本号返回的升级响应信息;
升级模块,用于当所述升级响应信息包括差分资源文件时,根据所述差分资源文件、本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级;
其中,所述差分资源文件为最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间发生改变的部分资源文件,通过diff命令比较最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本生成差分运算结果,并将差分运算结果中用于表示相等的内容和用于表示需要删除的内容删除以生成所述差分资源文件。
13.根据权利要求12所述的装置,其特征在于,所述升级模块包括:
第一生成单元,用于根据所述差分资源文件和本地缓存的渲染脚本,通过预设合并算法生成新的渲染脚本;
第二生成单元,用于根据所述新的渲染脚本和本地缓存的所述单页面应用的静态资源,生成所述单页面应用对应的升级后的资源文件。
14.根据权利要求13所述的装置,其特征在于,若所述升级响应信息还包括最新版本的渲染脚本的长度值和消息摘要算法md5值;所述装置还包括:
验证模块,用于通过md5算法对生成的所述新的渲染脚本进行运算得到所述新的渲染脚本的md5值,及获取所述新的渲染脚本的长度值;根据生成的所述md5值、获取的所述长度值及所述升级响应信息包括的md5值和长度值,对所述新的渲染脚本进行版本验证;若验证失败,则重新向所述服务端发送获取差分资源文件的请求。
15.根据权利要求12所述的装置,其特征在于,所述装置还包括:
存储模块,用于当首次访问单页面应用的页面时,从服务端获取所述单页面应用的全部资源文件;从所述全部资源文件中提取不发生变化的部分资源文件作为所述单页面应用的静态资源,将所述静态资源固化存储在本地;将所述全部资源文件中除所述静态资源外的资源文件确定为所述单页面应用的渲染脚本,将所述渲染脚本缓存在本地缓存中。
16.根据权利要求12所述的装置,其特征在于,所述升级响应信息还包括页面数据,所述装置还包括:
第一显示模块,用于对所述单页面应用进行升级后,根据本地缓存的所述单页面应用的静态资源和升级后的渲染脚本,对所述页面数据进行渲染,显示升级后所述单页面应用的页面,所述升级后的渲染脚本根据所述差分资源文件和本地缓存的所述单页面应用的渲染脚本生成。
17.根据权利要求12所述的装置,其特征在于,所述升级响应信息包括用于指示当前已缓存最新版本的指示信息和页面数据,所述装置还包括:
第二显示模块,用于根据本地缓存的所述单页面应用的渲染脚本和静态资源,渲染所述页面数据,显示所述单页面应用的页面。
18.一种单页面应用升级装置,其特征在于,所述装置包括:
接收模块,用于接收前端发送的单页面应用对应的数据请求,所述数据请求包括所述前端缓存的所述单页面应用的渲染脚本的版本号;
获取模块,用于获取所述单页面应用的渲染脚本的最新版本号;
生成模块,用于根据所述最新版本号和所述数据请求包括的版本号,生成升级响应信息,所述升级响应信息包括差分资源文件,所述差分资源文件为最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本之间发生改变的部分资源文件,通过diff命令比较最新版本的渲染脚本与该数据请求包括的版本号对应的渲染脚本生成差分运算结果,并将差分运算结果中用于表示相等的内容和用于表示需要删除的内容删除以生成所述差分资源文件;
发送模块,用于向所述前端发送所述升级响应信息,以使所述前端根据所述升级响应信息和本地缓存的所述单页面应用的渲染脚本及静态资源,对所述单页面应用进行升级。
19.根据权利要求18所述的装置,其特征在于,所述生成模块包括:
比较单元,用于比较所述最新版本号和所述数据请求包括的版本号是否相同;
第二生成单元,用于如果当所述比较单元比较出所述最新版本号和所述数据请求包括的版本号不相同时,根据所述最新版本号和所述数据请求包括的版本号,生成所述数据请求包括的版本号对应的差分资源文件,将所述差分资源文件确定为升级响应信息。
20.根据权利要求19所述的装置,其特征在于,所述第二生成单元包括:
第一获取子单元,用于根据所述最新版本号获取最新版本的渲染脚本;根据所述数据请求包括的版本号获取对应版本的渲染脚本;
差分运算子单元,用于对所述数据请求包括的版本号对应的渲染脚本和所述最新版本的渲染脚本进行差分运算,得到所述数据请求包括的版本号对应的差分资源文件。
21.根据权利要求19所述的装置,其特征在于,所述第二生成单元包括:
第二获取子单元,用于根据所述最新版本号和所述数据请求包括的版本号,从相邻版本号与差分资源子文件的对应关系中,获取从所述数据请求包括的版本号到所述最新版本号之间各前后相邻的两个版本号对应的差分资源子文件;
组成子单元,用于将获取的各差分资源子文件组成所述数据请求包括的版本号对应的差分资源文件。
22.根据权利要求20或21所述的装置,其特征在于,所述装置还包括:
添加模块,用于获取所述最新版本号对应的最新版本的渲染脚本的长度值;通过md5算法对所述最新版本的渲染脚本进行运算,得到所述最新版本的渲染脚本的md5值;获取所述单页面应用的页面数据;将所述长度值、所述md5值和所述页面数据添加到所述升级响应信息中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511030920.9A CN106933614B (zh) | 2015-12-30 | 2015-12-30 | 一种单页面应用升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511030920.9A CN106933614B (zh) | 2015-12-30 | 2015-12-30 | 一种单页面应用升级方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933614A CN106933614A (zh) | 2017-07-07 |
CN106933614B true CN106933614B (zh) | 2020-12-22 |
Family
ID=59444368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511030920.9A Active CN106933614B (zh) | 2015-12-30 | 2015-12-30 | 一种单页面应用升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933614B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558187B (zh) * | 2017-09-27 | 2022-08-23 | 斑马智行网络(香港)有限公司 | 一种用户界面渲染方法及装置 |
CN108427583A (zh) * | 2018-03-14 | 2018-08-21 | 五八有限公司 | 应用程序的页面显示方法、装置、设备及可读存储介质 |
CN109471988A (zh) * | 2018-10-12 | 2019-03-15 | 平安科技(深圳)有限公司 | 页面信息更新方法、装置、计算机设备及存储介质 |
CN110784518A (zh) * | 2019-09-27 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种静态资源获取方法与装置 |
CN110809036B (zh) * | 2019-10-25 | 2022-05-10 | 无线生活(北京)信息技术有限公司 | 资源更新方法及装置 |
CN110764749A (zh) * | 2019-10-25 | 2020-02-07 | 金蝶软件(中国)有限公司 | 系统页面开发管理方法、装置、计算机设备和存储介质 |
CN112783539A (zh) * | 2020-04-20 | 2021-05-11 | 招商证券股份有限公司 | 应用更新方法、系统、终端设备及存储介质 |
CN112269622A (zh) * | 2020-11-24 | 2021-01-26 | 百度国际科技(深圳)有限公司 | 页面管理方法、装置、设备和介质 |
CN113419757B (zh) * | 2021-06-22 | 2023-10-20 | 康键信息技术(深圳)有限公司 | 基于灰度环境的页面升级方法、装置、设备及存储介质 |
CN114139083B (zh) * | 2022-01-06 | 2023-03-14 | 北京百度网讯科技有限公司 | 网页渲染方法、装置及电子设备 |
CN116383537B (zh) * | 2023-05-23 | 2023-09-08 | 飞狐信息技术(天津)有限公司 | 一种页面数据的预加载方法、装置、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833350A (zh) * | 2012-09-11 | 2012-12-19 | 优视科技有限公司 | WebApp更新的处理方法和处理装置 |
CN103092665A (zh) * | 2013-03-01 | 2013-05-08 | 畅捷通信息技术股份有限公司 | 即时更新装置和即时更新方法 |
CN103186400A (zh) * | 2011-12-31 | 2013-07-03 | 深圳市金蝶中间件有限公司 | Web应用程序升级方法及系统 |
CN103279373A (zh) * | 2013-05-31 | 2013-09-04 | 广州市动景计算机科技有限公司 | 浏览器外壳功能的更新方法及装置 |
US20150113519A1 (en) * | 2007-03-08 | 2015-04-23 | Microsoft Technology Licensing, Llc. | Extending functionality of web-based applications |
CN104657170A (zh) * | 2013-11-25 | 2015-05-27 | 腾讯科技(上海)有限公司 | 一种数据更新方法、装置及系统 |
CN105138376A (zh) * | 2015-09-01 | 2015-12-09 | 北京皮尔布莱尼软件有限公司 | 混合模式应用、其网页资源升级方法、移动终端以及系统 |
-
2015
- 2015-12-30 CN CN201511030920.9A patent/CN106933614B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150113519A1 (en) * | 2007-03-08 | 2015-04-23 | Microsoft Technology Licensing, Llc. | Extending functionality of web-based applications |
CN103186400A (zh) * | 2011-12-31 | 2013-07-03 | 深圳市金蝶中间件有限公司 | Web应用程序升级方法及系统 |
CN102833350A (zh) * | 2012-09-11 | 2012-12-19 | 优视科技有限公司 | WebApp更新的处理方法和处理装置 |
CN103092665A (zh) * | 2013-03-01 | 2013-05-08 | 畅捷通信息技术股份有限公司 | 即时更新装置和即时更新方法 |
CN103279373A (zh) * | 2013-05-31 | 2013-09-04 | 广州市动景计算机科技有限公司 | 浏览器外壳功能的更新方法及装置 |
CN104657170A (zh) * | 2013-11-25 | 2015-05-27 | 腾讯科技(上海)有限公司 | 一种数据更新方法、装置及系统 |
CN105138376A (zh) * | 2015-09-01 | 2015-12-09 | 北京皮尔布莱尼软件有限公司 | 混合模式应用、其网页资源升级方法、移动终端以及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106933614A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933614B (zh) | 一种单页面应用升级方法及装置 | |
CA2802746C (en) | System and methods for facilitating the synchronization of data | |
CN105049486B (zh) | 静态文件的版本管理方法、装置及系统 | |
US11569982B2 (en) | Blockchain compression using summary and padding blocks | |
US9940744B2 (en) | Remote font management | |
JP2017084334A (ja) | 仮想マシンイメージファイルを抽出する方法および装置 | |
CN108846753B (zh) | 用于处理数据的方法和装置 | |
CN103795765B (zh) | 一种文件上传校验方法及系统 | |
CN105989098B (zh) | 图标包的生成方法及服务器、图标的处理方法及系统 | |
CN111010364B (zh) | 用于基于离线对象的存储和模拟rest响应的系统 | |
CN114697304B (zh) | 一种灰度发布方法、系统、装置、设备及存储介质 | |
US20100257413A1 (en) | Verification service for dynamic content update | |
CN113382083A (zh) | 一种网页截图方法和装置 | |
CN109908585A (zh) | 一种文件处理方法及系统、计算设备及存储介质 | |
CN111338688B (zh) | 数据长效缓存方法、装置、计算机系统及可读存储介质 | |
EP2827261A1 (en) | Method for bundling images and devices thereof | |
CN110737853B (zh) | 一种多平台展示静态页面数据同步方法及b2b系统 | |
CN111679826A (zh) | 实时预览网页编辑内容的方法、装置、设备及存储介质 | |
CN109522282B (zh) | 图片管理方法、装置、计算机装置及存储介质 | |
CN108055594B (zh) | 边缘切片的实现方法、装置、计算机设备及存储介质 | |
CN110874445A (zh) | 网页加载方法、客户端及业务服务中心 | |
KR100680034B1 (ko) | 문맥 인식이 강화된 메시지 변환 시스템 및 방법 | |
CN107229655A (zh) | 页面静态文件的更新方法、装置及系统 | |
CN112347046B (zh) | 一种获取分布式系统中文件的创建时间的方法 | |
CN111355766B (zh) | Pdf文件在网络上按需加载的渲染方法 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200604 Address after: 310051 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Alibaba (China) Co.,Ltd. Address before: Two, room 902, West 64, 66 Middle Road, Tianhe District, Guangdong, Guangzhou, China 510665 Applicant before: GUANGZHOU UCWEB COMPUTER TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |