CN110032388B - 一种增量文件的构建、发布、下载方法及装置 - Google Patents

一种增量文件的构建、发布、下载方法及装置 Download PDF

Info

Publication number
CN110032388B
CN110032388B CN201910274181.XA CN201910274181A CN110032388B CN 110032388 B CN110032388 B CN 110032388B CN 201910274181 A CN201910274181 A CN 201910274181A CN 110032388 B CN110032388 B CN 110032388B
Authority
CN
China
Prior art keywords
file
version
incremental
dependent
mapping
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
Application number
CN201910274181.XA
Other languages
English (en)
Other versions
CN110032388A (zh
Inventor
韩瑞
孙嘉伟
张滨浏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910274181.XA priority Critical patent/CN110032388B/zh
Publication of CN110032388A publication Critical patent/CN110032388A/zh
Application granted granted Critical
Publication of CN110032388B publication Critical patent/CN110032388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

本说明书实施例提供一种增量文件的构建、发布、下载方法及装置。所述方法包括:获取本次添加的第一标志位和前一次添加的第二标志位,分别根据所述第一标志位和第二标志位确定第一版本和第二版本;对所述第一版本和第二版本执行比较操作,从而获得变化文件;通过对所述变化文件进行编译,得到增量文件,以完成所述增量文件的构建。

Description

一种增量文件的构建、发布、下载方法及装置
技术领域
本说明书涉及计算机技术领域,尤其涉及一种增量文件的构建、发布、下载方法及装置。
背景技术
随着互联网技术的发展,网络应用已成为人们生活中不可缺少的一部分,为人们的工作和生活带来了很大的便利。网络应用的功能主要是通过智能终端中的应用软件来实现的,例如:通过web客户端实现网页的浏览。为了对智能终端中的应用软件进行完善,开发人员需要对应用软件的版本进行更新。在对应用软件进行更新时,需要对新版本的应用软件的原始程序文件执行构建操作,然而随着时间的推移,应用软件更新次数的增加,应用软件中的项目文件越来越大,在对新版本的全部文件执行全量构建时,所耗费的时间也越来越长,因此可以通过增量构建的方式来进行应用软件的更新。
现有技术中,在进行增量文件的构建时,通过对本次更新的字符进行构建,但是基于字符进行构建的方式,需要区分新增、修改和删除场景,因此带来较多的场景维护成本,另外当一次修改内容较多时,上述构建方式也可能会引发性能问题。基于现有技术,需要提供一种无需区分场景、高效、稳定的增量文件的构建方案。
发明内容
本说明书实施例提供一种增量文件的构建、发布、下载方法及装置,以解决现有技术存在的增量构建需要区分场景,耗时长,不够稳定的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,本说明书实施例提供了一种基于增量文件的构建方法,所述方法包括:
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得变化文件;
对所述变化文件进行编译,得到增量文件,以完成所述增量文件的构建。
第二方面,本说明书实施例提供了一种增量文件的发布方法,所述方法包括:
将增量文件和第一映射文件发布至web服务器上;
其中,所述增量文件为采用以下方法所构建获得,具体的,
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
对所述变化文件进行编译,得到编译后的增量文件,以完成所述增量文件的构建。
第三方面,本说明书实施例提供了一种增量文件的下载方法,所述方法包括:
当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中;
利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件;
若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并根据所述依赖文件从所述web客户端中存储的第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值;
将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件。
第四方面,本说明书实施例提供了一种增量文件的构建装置,所述装置包括:
获取模块,用于获取本次添加的第一标志位和前一次添加的第二标志位;
确定模块,用于根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
比较模块,用于对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
编译模块,用于对所述变化文件进行编译,得到编译后的增量文件,以完成所述增量文件的构建。
第五方面,本说明书实施例提供了一种增量文件的发布装置,所述装置包括:
发布模块,用于将增量文件和第一映射文件发布至web服务器上;
其中,所述增量文件为采用以下方法所构建获得,具体的,
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
对所述变化文件进行编译,得到编译后的增量文件,以完成所述增量文件的构建。
第六方面,本说明书实施例提供了一种增量文件的下载装置,所述装置包括:
下载模块,用于当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中;
确定模块,用于利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件;
判断模块,用于若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并判断所述web客户端中存储的第二映射文件中是否包含所述依赖文件的文件标识;
比较模块,用于当包含所述依赖文件的文件标识时,从所述第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值,并将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件;当不包含所述依赖文件的文件标识时,从所述web服务器中下载变化的依赖文件所对应的增量文件。
第七方面,本说明书实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面中所述的方法。
第八方面,本说明书实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第二方面中所述的方法。
第九方面,本说明书实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第三方面中所述的方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过获取本次添加的第一标志位和前一次添加的第二标志位,分别根据第一标志位和第二标志位确定第一版本和第二版本;对第一版本和第二版本执行比较操作,从而获得变化文件;通过对变化文件进行编译,得到编译后的增量文件,以完成增量文件的构建。基于本方案,能够实现基于变化文件的增量构建,无需区分新增、修改和删除场景,工作效率高,且性能稳定。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种增量文件的构建方法的流程示意图;
图2为本说明书实施例提供的一种增量文件的发布方法的流程示意图;
图3为本说明书实施例提供的一种增量文件的下载方法的流程示意图;
图4为本说明书实施例提供的一种增量文件的构建装置的结构示意图;
图5为本说明书实施例提供的一种增量文件的发布装置的结构示意图;
图6为本说明书实施例提供的一种增量文件的下载装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在对应用软件进行更新时,可以基于全量构建或增量构建的方式实现更新,一方面对于全量构建而言,当开发人员开发出新版本的应用软件后,将该新版本的应用软件对应的所有原始程序文件进行构建,即对所有的原始程序文件执行编译操作,具体地,编译操作是指将开发人员最初开发时编写的应用软件的原始程序文件经过一定的转换操作,转换为智能终端中的应用软件可以识别的程序文件;但是随着时间的推移,应用软件更新次数的增加,应用软件中的项目文件越来越大,由于编译操作需要一定的耗时,加之历史更新中stylus、less、sass等各种语法混用,因此导致编译操作过程耗费的时间也越来越长,在基于全量构建方式对新版本的应用软件进行更新时,也就越来越耗时;并且在全量构建方式中,如果基于php smarty模板做文件合并,使得关联文件太多,修改一次底层组件,所有模板都有影响。
另一方面对于增量构建而言,现有技术的增量构建方法中,当开发人员开发出新版本的应用软件后,通过基于该新版本应用软件中的字符进行增量构建,这虽然可以降低对所有原始程序文件执行编译操作的耗时,但是基于字符进行增量构建的方式,需要区分新增、修改和删除场景,因此会带来较多的场景维护成本;另外当一次修改内容较多时,由于既要保存修改文件的位置信息,还要保存字符更新的内容,导致维护文件较大,使得基于字符的增量构建方式可能会引发性能问题。
针对上述现有技术的问题,本说明书实施例通过获取当前版本以及上一个版本的标志位,根据标志位来确定当前版本以及上一个版本,即第一版本和第二版本,在分布式版本控制系统git中对第一版本与第二版本执行diff操作,即可获得第一版本与第二版本之间发生变化的文件,再对变化文件进行编译,就能得到编译后的增量文件,从而实现了基于文件的增量构建。与基于字符的增量构建方式相比,本方案无需区分新增、修改和删除场景,提升了增量构建的工作效率,并且性能稳定。
在具体应用场景中,应用软件可以包括web客户端,web客户端可以认为是基于动态页面技术的客户端软件,通过web客户端可以展现信息内容。本说明书以下实施例的内容均以web客户端作为应用软件进行描述的,此时可以将本说明书技术方案的具体应用场景定位于web应用的版本更新过程。
基于上述场景,下面对本说明书的方案进行详细说明。
图1为本说明书实施例提供的一种增量文件的构建方法的流程示意图,该方法具体可以包括以下步骤:
在步骤S110中,获取本次添加的第一标志位和前一次添加的第二标志位。
在本说明书一个或多个实施例中,标志位可以用tag来表示,tag可以为针对当前版本的标志位,tag可以表示为一个时间戳(如时间节点),根据tag可以得知截止到该节点所处理的文件。在实际应用中,通过对第二版本(可以为上一版本)进行调整,获得对第二版本进行调整后的第一版本(可以为当前版本),并基于git对第一版本添加第一标志位,同样的,第二标志位可以是在对第二版本的前一个版本进行调整后,针对第二版本添加的标志位。因此,每个标志位tag都对应一个版本,并且通过该标志位可以方便直接回滚到任意版本。上述对版本进行调整的过程可以在前端开发的本地完成。
在步骤S120中,根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本。
具体地,基于前述实施例的内容,第一标志位对应第一版本,第二标志位则对应第二版本,因此在本说明书一个实施例中,第一版本可以是指当前web应用版本,第二版本可以是指当前web应用版本的上一个版本。需要说明的是,在本说明书另外的实施例中,第一版本和第二版本可以认为是全部调整完成后,且用于发布至web服务器上的版本,也可以将每次修改视为一个版本,但并非每次修改都需要发布至web服务器上,因此,本说明书中的版本可以不对应web客户端中的具体版本,在开发端的每次修改也可以视为版本发生变化。
在步骤S130中,对所述第一版本和第二版本执行比较操作,获得变化文件。
在本说明书一个或多个实施例中,对第一版本和第二版本执行比较操作的过程可以在分布式版本控制系统git中实现,git是一种用于版本管理的版本控制工具,可以记录每次版本修改的文件和文件内容。因此,可以在git中采用diff方式将第一版本与第二版本进行比较,从而直接获得第一版本与第二版本之间的变化文件,也就是当前版本与上一个版本比较之后的差异文件。其中,变化文件可以包括新增、修改、删除等情形,变化文件可以是一个或多个,变化文件的文件类型可以为html文件、js文件或css文件等,其中html文件可以是.tpl/.html文件,js文件可以是.js/.ts/.jsx/.vue等相关js扩展名的文件,css文件可以是.less/.css/.sass/.styl等相关css扩展名的文件。
进一步地,在本说明书一个实施例中,对第一版本和第二版本进行diff得到变化文件的操作过程,可以在前端开发的本地来完成,在获得变化文件后还可以将变化文件提交到代码服务器上,并且在整个开发过程中,可能会多次提交变化文件到代码服务器。由于是基于两个版本的程序文件做的diff,可以直接获得版本变化后的变化文件,因此无需区分新增、修改、删除等场景。
在步骤S140中,对所述变化文件进行编译,得到增量文件,以完成所述增量文件的构建。
在本说明书一个或多个实施例中,由于变化文件为原始程序文件,原始程序文件是开发时采用高级语法编写的文件,例如:html文件、js文件或less文件等,通过编译操作可以将变化文件转换为web客户端可以识别的文件,例如:基于Babel编译器对采用JavaScript脚本语言编写的js文件做编译,得到web客户端可以识别的js文件,对less文件进行编译后得到web客户端可以识别的css文件。另外,编译操作可以在代码服务器上完成,将变化文件提交到代码服务器后,由代码服务器基于Babel编译器对变化文件进行自动编译。
进一步地,在本说明书一个实施例中,在对变化文件进行编译得到增量文件之后,还可以基于增量文件的内容,对增量文件进行计算,得到增量文件的加密值,例如:可以采用md5算法对增量文件的内容进行运算,得到md5值;另外,除了采用md5算法外,还可以采用base64或者sha1等算法对增量文件的内容进行计算得到加密值。另外,实际应用中还可以对增量文件进行压缩处理,以降低增量文件的大小。
再进一步地,在本说明书一个实施例中,在上述得到增量文件的加密值之后,还可以将变化文件或增量文件的文件标识与加密值做映射,得到文件标识与加密值之间的对应关系,并根据对应关系对预定的第一映射文件进行更新。
在本说明书一个或多个实施例中,文件标识可以是文件路径、文件名或者文件路径+文件名,具体地,由于增量文件为变化文件进行编译后得到的,与变化文件相比增量文件的文件标识没有发生改变,因此变化文件的文件标识与其所对应的增量文件的文件标识是相同的,以下实施例中的文件标识可以用文件路径来表示。
在实际应用中,第一映射文件中存储了所有程序文件的文件标识(如文件路径)与加密值之间的对应关系,该对应关系的存储方式可以是将文件路径与加密值以key-value的形式进行存储,每个key-value关系对中,key为程序文件的唯一标识特征(即文件标识),value为对程序文件(对变化文件构建后的增量文件)的内容进行计算得到的加密值。每当对版本进行调整后,即版本发生更新时,对于本次更新的增量文件,都需要将其文件路径与新的加密值在第一映射文件中的key-value关系对中进行更新,以保证第一映射文件中存储的key-value关系对为最新变化后的对应关系。值得说明的是,当进行web客户端的首个版本发布时,会创建一个第一映射文件,第一映射文件保存首个版本中所有程序文件的文件路径与加密值之间的对应关系,所述第一映射文件可以为map文件(如js文件等)。
上述内容主要介绍了本说明书实施例中增量文件的构建方法,本说明书实施例还基于上述构建方法对增量文件的发布过程进行了描述。参见图2,该图示出了本说明书实施例提供的一种增量文件的发布方法的流程示意图,该方法具体可以包括以下步骤:
步骤210,将增量文件和第一映射文件发布至web服务器上。
在本说明书一个或多个实施例中,可以通过代码服务器将增量文件和第一映射文件直接同时发布至web服务器上;另外还可以将模块加载器也发布至web服务器,但模块加载器并不随着增量文件和第一映射文件一起发布,通常对于一个web客户端来说,可以只发布一次模块加载器即可。
在本说明书一个或多个实施例中,增量文件可以采用以下方法构建获得,该方法具体可以包括:
获取本次添加的第一标志位和前一次添加的第二标志位;
根据第一标志位确定与第一标志位相对应的第一版本,并根据第二标志位确定与第二标志位相对应的第二版本;
对第一版本和第二版本执行比较操作,获得比较操作后的变化文件;
对变化文件进行编译,得到编译后的增量文件,以完成增量文件的构建。
具体的,本说明书实施例中增量文件的构建过程与前述实施例中步骤S110~步骤S140的操作方法相同,可对应参见前述实施例中的相关阐述,这里不再赘述。
需要说明的是,由于增量发布只发布本次版本更新变化的文件,所以并不知道没有发生变化的文件是否依然在用;而当全量发布时,发布的是全部文件,所以之前版本的程序文件已经没有存在意义,例如:同一个程序文件a.js,每次修改文件的文件内容都不一样,所以每次修改后的文件的md5值也都不一样,编译后的文件a_md5.js也不一样,随着时间的推移,a.js会生成各种版本文件。因此,在实际应用中,为了避免随着时间的推移,无用的程序文件太多,可以在全量发布的时候清除历史文件。
经测试数据证明,采用本说明书技术方案的增量文件的构建和发布方法,可大大缩短从构建到发布的整个时间,例如当单个js文件变化时,整个发布时间在5~7s;单个less文件变化时,整个发布时间大约10s。
上述内容主要介绍了本说明书实施例中增量文件的构建和发布方法,本说明书实施例还基于上述构建和发布方法对增量文件的下载过程进行了描述。参见图3,该图示出了本说明书实施例提供的一种增量文件的下载方法的流程示意图,该方法具体可以包括以下步骤:
在步骤S310中,当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中。
在本说明书一个或多个实施例中,web页面的加载过程可以是基于web客户端在电子设备中实现的,该电子设备包括但不限于安装了智能操作系统的智能手机、平板电脑、PC等,在另一些实施例中,所述电子设备还可以是安装了智能操作系统的智能家电设备,例如智能电视等。所述web客户端可以包括浏览器和webview,其中各种app内打开web页面可以是通过webview来打开,例如微信等。优选地,将第一映射文件从web服务器下载到web客户端中,具体可以是将第一映射文件先下载到本地硬盘中,再由web客户端将第一映射文件加载到内存中。
在步骤S320中,利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件。
在本说明书一个或多个实施例中,模块加载器可以提前部署到web客户端(如浏览器端)中,也可以从web服务器中下载,但并不是每次进行web页面的加载时,都从web服务器中下载模块加载器,而是一个站点下载一次模块加载器至web客户端,或者当模块加载器的文件发生变化时进行下载。优选地,模块加载器可以依赖js执行环境,模块加载器可以是loader.js(js动态加载器),loader.js可以认为是一个lite版本的requirejs(JavaScript模块加载器),可以用于实现判断文件是否变化、动态增量加载js/css、管理localStorage(本地存储)等。
进一步地,在本说明书一个实施例中,在对web页面进行加载时,可以先加载web页面所对应的入口文件,再根据入口文件来确定依赖文件。例如:web页面先只加载a.js,但是a.js需要依赖b.js和c.js,那么a.js属于入口文件,b.js和c.js属于依赖文件。
具体地,可以把web客户端视为一个容器,通过url加载对应的web页面,加载web页面需要用到html、js、css等文件,对一个大型的web站点来说,会有多人协作开发多个web页面,因此会有大量的html、js、css文件。可以把这些html、js、css文件称为web页面的依赖文件(或者依赖资源),每个web页面依赖的文件可能相同,也可能不同,依赖文件的数量也可能是一个或者多个。
在步骤S330中,若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并判断所述web客户端中存储的第二映射文件中是否包含所述依赖文件的文件标识。
根据前述实施例的内容,第一映射文件中存储了所有程序文件的文件路径与加密值之间的对应关系,当进行增量文件的构建时,通过对当前版本和上一个版本进行diff就可以得到本次变化的差异文件,即本次对哪些文件进行了修改。在进行依赖文件的加载时,可直接根据依赖文件的文件路径从第一映射文件中,获取依赖文件的文件路径所对应的第一加密值。
在web客户端的本地存储空间中存储了完整的html、js、css文件以及第二映射文件,所述第二映射文件中存储了本次更新版本的上一个版本中的,所有依赖文件的文件路径与依赖文件的加密值之间的对应关系。优选地,上述web客户端的本地存储空间可以采用localStorage或IndexedDB存储方式。
在步骤S340中,当包含所述依赖文件的文件标识时,从所述第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值,并将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件。
在本说明书一个或多个实施例中,可以根据第一加密值与第二加密值的比较结果,判断第一加密值与第二加密值是否相同,当不同时说明第一加密值发生变化,从而证明与第一加密值所对应文件路径的依赖文件发生了变化,那么与该依赖文件的文件路径相同的程序文件(即变化文件)也发生了变化,即本次web客户端的版本更新中对该依赖文件进行了更新,继而可以从web服务器中下载文件路径相同的增量文件,将该增量文件作为依赖文件进行加载。
在步骤S350中,当不包含所述依赖文件的文件标识时,从所述web服务器中下载变化的依赖文件所对应的增量文件。
在本说明书一个或多个实施例中,第二映射文件中不包含依赖文件的文件路径时,说明依赖文件发生了变化,并且可能是由于以下情形发生的变化,例如:对变化文件的文件名进行了更改,或者变化文件为新增文件;此时由于第二映射文件中保存的是本次更新版本的上一个版本的依赖文件的文件路径与加密值之间的对应关系,因此不能从原第二映射文件中找到本次加载的依赖文件的文件路径,此时可以从web服务器中直接下载变化的依赖文件所对应的增量文件。
在具体应用场景中,当变化的依赖文件为多个时,可以对多个变化的依赖文件执行合并请求操作,得到合并下载请求,再根据合并下载请求从web服务器中下载多个变化的依赖文件所对应的增量文件。例如:所有发生变化且需要更新的依赖文件,基于nginx插件(如nginx-http-concat)把多个文件用一个http请求合并下载,从而减少web客户端的http请求次数。当然在实际应用中,loader.js也可以支持debug模式,不执行合并请求,不走本地缓存。
进一步地,在本说明书一个实施例中,当发生变化时,从web服务器中下载变化的依赖文件所对应的增量文件之后,可以利用web客户端(如浏览器)对第一映射文件进行更新;另外,还可以根据第一加密值对第二映射文件中的第二加密值进行更新,从而使第二映射文件中的映射关系与这一次版本更新后的第一映射文件中的映射关系保持一致。由于第二映射文件存储在web客户端的本地存储空间(如localStorage存储)内,因此在更新映射关系时,需要对本地存储空间做溢出判断。
在本说明书一个或多个实施例中,当判断第一加密值未发生变化时,说明该依赖文件并未发生更新,因此可以利用js动态加载器直接对web客户端中存储的该依赖文件进行加载,在进行依赖文件的加载时,可以先把html文件、css文件等转换为js文件再进行加载。
基于同样的思路,本说明书实施例还提供了一种增量文件的构建装置,如图4为本说明书实施例提供的一种增量文件的构建装置,该装置400主要包括:
获取模块401,用于获取本次添加的第一标志位和前一次添加的第二标志位;
确定模块402,用于根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
比较模块403,用于对所述第一版本和第二版本执行比较操作,获得变化文件;
编译模块404,用于对所述变化文件进行编译,得到增量文件,以完成所述增量文件的构建。
根据本申请的实施例,在所述装置中,还包括:
调整模块405,用于对所述第二版本进行调整,获得对所述第二版本进行调整后的第一版本,并对所述第一版本添加第一标志位。
根据本申请的实施例,在所述装置中,所述比较模块具体用于:
在分布式版本控制系统git中采用diff方式将所述第一版本与第二版本进行比较,并获得所述第一版本与第二版本之间的变化文件。
根据本申请的实施例,在所述装置中,还包括:
加密模块406,用于基于所述增量文件的内容,对所述增量文件进行加密运算,得到所述增量文件的加密值。
根据本申请的实施例,在所述装置中,还进一步包括:
更新模块407,用于将所述变化文件或增量文件的文件标识与所述加密值做映射,得到所述文件标识与加密值之间的对应关系,并根据所述对应关系对预定的第一映射文件进行更新。
参见图5,为本说明书实施例提供的一种增量文件的发布装置,该装置500主要包括:
发布模块501,用于将增量文件和第一映射文件发布至web服务器上。
其中,所述增量文件为采用以下方法所构建获得,具体的,
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
对所述变化文件进行编译,得到编译后的增量文件,以完成所述增量文件的构建。
参见图6,为本说明书实施例提供的一种增量文件的下载装置,该装置600主要包括:
下载模块601,用于当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中;
确定模块602,用于利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件;
判断模块603,用于若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并判断所述web客户端中存储的第二映射文件中是否包含所述依赖文件的文件标识;
比较模块604,用于当包含所述依赖文件的文件标识时,从所述第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值,并将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件;当不包含所述依赖文件的文件标识时,从所述web服务器中下载变化的依赖文件所对应的增量文件。
根据本申请的实施例,在所述装置中,所述web客户端包括浏览器和webview,所述模块加载器包括js动态加载器。
根据本申请的实施例,在所述装置中,所述下载模块601还进一步用于:
当所述web页面为一级页面时,将模块加载器从web服务器下载至web客户端中。
根据本申请的实施例,在所述装置中,所述依赖文件的数量为一个或多个,所述依赖文件为html文件、js文件或css文件。
根据本申请的实施例,在所述装置中,所述第二映射文件中存储了所有依赖文件的文件标识与依赖文件的加密值之间的对应关系。
根据本申请的实施例,在所述装置中,所述web客户端中配置有本地存储空间,所述本地存储空间采用localStorage或IndexedDB存储方式,所述第二映射文件和所有的依赖文件存储在所述本地存储空间内。
根据本申请的实施例,在所述装置中,所述比较模块604还进一步用于:
当所述变化的依赖文件为多个时,对多个所述变化的依赖文件执行合并请求操作,得到合并下载请求,根据所述合并下载请求从所述web服务器中下载多个所述变化的依赖文件所对应的增量文件。
根据本申请的实施例,在所述装置中,还进一步包括:
更新模块605,用于从所述web服务器中下载变化的依赖文件所对应的增量文件之后,根据所述第一映射文件中存储的所述变化的依赖文件的文件标识与第一加密值之间的对应关系,对所述第二映射文件进行更新。
本说明书实施例还提供一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述一种增量文件的构建方法。
本说明书实施例还提供一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述一种增量文件的发布方法。
本说明书实施例还提供一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述一种增量文件的下载方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、电子设备、非易失性计算机存储介质与方法是对应的,因此,装置、电子设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、电子设备、非易失性计算机存储介质的有益技术效果。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (23)

1.一种增量文件的构建方法,所述方法包括:
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得变化文件;
对所述变化文件进行编译,得到增量文件,基于所述增量文件的内容,计算得到所述增量文件的加密值,以完成所述增量文件的构建。
2.如权利要求1所述的方法,所述获取本次添加的第一标志位和前一次添加的第二标志位之前,还包括:
对所述第二版本进行调整,获得对所述第二版本进行调整后的第一版本,并对所述第一版本添加第一标志位。
3.如权利要求1所述的方法,所述对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件,具体包括:
在分布式版本控制系统git中采用diff方式将所述第一版本与第二版本进行比较,并获得所述第一版本与第二版本之间的变化文件。
4.如权利要求1所述的方法,所述计算得到所述增量文件的加密值之后,还包括:
将所述变化文件或增量文件的文件标识与所述加密值做映射,得到所述文件标识与加密值之间的对应关系,并根据所述对应关系对预定的第一映射文件进行更新。
5.一种增量文件的发布方法,所述方法包括:
将增量文件和第一映射文件发布至web服务器上;
其中,所述增量文件为采用以下方法所构建获得,具体的,
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
对所述变化文件进行编译,得到编译后的增量文件,基于所述增量文件的内容,计算得到所述增量文件的加密值,以完成所述增量文件的构建。
6.如权利要求5所述的方法,所述第一映射文件为采用以下方法所更新获得,具体的:
将所述变化文件或增量文件的文件标识与所述增量文件的加密值做映射,得到所述文件标识与加密值之间的对应关系,并根据所述对应关系对预定的第一映射文件进行更新。
7.一种增量文件的下载方法,所述方法包括:
当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中;
利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件;
若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并判断所述web客户端中存储的第二映射文件中是否包含所述依赖文件的文件标识;
当包含所述依赖文件的文件标识时,从所述第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值,并将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件;
当不包含所述依赖文件的文件标识时,从所述web服务器中下载变化的依赖文件所对应的增量文件,具体包括:当所述变化的依赖文件为多个时,对多个所述变化的依赖文件执行合并请求操作,得到合并下载请求,根据所述合并下载请求从所述web服务器中下载多个所述变化的依赖文件所对应的增量文件。
8.如权利要求7所述的方法,所述web客户端包括浏览器和webview,所述模块加载器包括js动态加载器。
9.如权利要求7所述的方法,所述利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载之前,还包括:
当所述web页面为一级页面时,将模块加载器从web服务器下载至web客户端中。
10.如权利要求7所述的方法,所述依赖文件的数量为一个或多个,所述依赖文件为html文件、js文件或css文件。
11.如权利要求7所述的方法,所述第二映射文件中存储了所有依赖文件的文件标识与依赖文件的加密值之间的对应关系。
12.如权利要求7所述的方法,所述web客户端中配置有本地存储空间,所述本地存储空间采用localStorage或IndexedDB存储方式,所述第二映射文件和所有的依赖文件存储在所述本地存储空间内。
13.如权利要求7所述的方法,所述判断所述第一加密值是否发生变化之后,还包括:当未发生变化时,对所述web客户端中存储的依赖文件进行加载。
14.如权利要求7所述的方法,所述从所述web服务器中下载变化的依赖文件所对应的增量文件之后,还包括:根据所述第一映射文件中存储的所述变化的依赖文件的文件标识与第一加密值之间的对应关系,对所述第二映射文件进行更新。
15.一种增量文件的构建装置,所述装置包括:
获取模块,用于获取本次添加的第一标志位和前一次添加的第二标志位;
确定模块,用于根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
比较模块,用于对所述第一版本和第二版本执行比较操作,获得变化文件;
编译模块,用于对所述变化文件进行编译,得到增量文件;
加密模块,用于基于所述增量文件的内容,计算得到所述增量文件的加密值,以完成所述增量文件的构建。
16.如权利要求15所述的装置,还包括:
调整模块,用于对所述第二版本进行调整,获得对所述第二版本进行调整后的第一版本,并对所述第一版本添加第一标志位。
17.如权利要求15所述的装置,所述比较模块具体用于:
在分布式版本控制系统git中采用diff方式将所述第一版本与第二版本进行比较,并获得所述第一版本与第二版本之间的变化文件。
18.如权利要求15所述的装置,进一步包括:
更新模块,用于将所述变化文件或增量文件的文件标识与所述加密值做映射,得到所述文件标识与加密值之间的对应关系,并根据所述对应关系对预定的第一映射文件进行更新。
19.一种增量文件的发布装置,所述装置包括:
发布模块,用于将增量文件和第一映射文件发布至web服务器上;
其中,所述增量文件为采用以下方法所构建获得,具体的,
获取本次添加的第一标志位和前一次添加的第二标志位;
根据所述第一标志位确定与所述第一标志位相对应的第一版本,并根据所述第二标志位确定与所述第二标志位相对应的第二版本;
对所述第一版本和第二版本执行比较操作,获得所述比较操作后的变化文件;
对所述变化文件进行编译,得到编译后的增量文件,基于所述增量文件的内容,计算得到所述增量文件的加密值,以完成所述增量文件的构建。
20.一种增量文件的下载装置,所述装置包括:
下载模块,用于当进行web页面的加载时,将第一映射文件从web服务器下载到web客户端中;
确定模块,用于利用所述web客户端中的模块加载器对所述web页面所对应的入口文件进行加载,并根据所述入口文件确定是否存在需要依赖的依赖文件;
判断模块,用于若存在所述依赖文件,则根据所述依赖文件从第一映射文件中,获取所述依赖文件的文件标识所对应的第一加密值;并判断所述web客户端中存储的第二映射文件中是否包含所述依赖文件的文件标识;
比较模块,用于当包含所述依赖文件的文件标识时,从所述第二映射文件中获取所述依赖文件的文件标识所对应的第二加密值,并将所述第一加密值与第二加密值进行比较,判断所述第一加密值是否发生变化,当发生变化时,从所述web服务器中下载变化的依赖文件所对应的增量文件;当不包含所述依赖文件的文件标识时,从所述web服务器中下载变化的依赖文件所对应的增量文件,具体包括:当所述变化的依赖文件为多个时,对多个所述变化的依赖文件执行合并请求操作,得到合并下载请求,根据所述合并下载请求从所述web服务器中下载多个所述变化的依赖文件所对应的增量文件。
21.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至4中任一项所述的方法。
22.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求5至6中任一项所述的方法。
23.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求7至14中任一项所述的方法。
CN201910274181.XA 2019-04-04 2019-04-04 一种增量文件的构建、发布、下载方法及装置 Active CN110032388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910274181.XA CN110032388B (zh) 2019-04-04 2019-04-04 一种增量文件的构建、发布、下载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910274181.XA CN110032388B (zh) 2019-04-04 2019-04-04 一种增量文件的构建、发布、下载方法及装置

Publications (2)

Publication Number Publication Date
CN110032388A CN110032388A (zh) 2019-07-19
CN110032388B true CN110032388B (zh) 2022-04-29

Family

ID=67237599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910274181.XA Active CN110032388B (zh) 2019-04-04 2019-04-04 一种增量文件的构建、发布、下载方法及装置

Country Status (1)

Country Link
CN (1) CN110032388B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851169B (zh) * 2020-01-16 2020-04-21 武汉斗鱼鱼乐网络科技有限公司 一种补丁信息更新的方法及系统、介质、电子设备
CN111355784B (zh) * 2020-02-20 2022-10-25 北京字节跳动网络技术有限公司 一种处理请求信息的方法、装置、介质和电子设备
CN112579126A (zh) * 2020-12-21 2021-03-30 杭州米络星科技(集团)有限公司 软件开发平台及软件开发方法
CN112698864A (zh) * 2021-01-05 2021-04-23 潍柴动力股份有限公司 源文件版本信息处理方法、装置、电子设备及存储介质
CN112783508B (zh) * 2021-02-01 2022-05-24 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质
CN117369842A (zh) * 2022-06-30 2024-01-09 中兴通讯股份有限公司 系统更新文件配置方法、系统更新方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371880A (zh) * 2016-09-06 2017-02-01 珠海金山网络游戏科技有限公司 一种资源热加载快速迭代游戏制作的系统和方法
CN106528125A (zh) * 2016-10-26 2017-03-22 腾讯科技(深圳)有限公司 一种数据文件的增量更新方法和服务器、客户端以及系统
CN106648712A (zh) * 2017-02-27 2017-05-10 百度在线网络技术(北京)有限公司 增量更新包的生成方法、装置和服务器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063617B2 (en) * 2015-09-22 2018-08-28 Facebook, Inc. Error correction using state information of data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371880A (zh) * 2016-09-06 2017-02-01 珠海金山网络游戏科技有限公司 一种资源热加载快速迭代游戏制作的系统和方法
CN106528125A (zh) * 2016-10-26 2017-03-22 腾讯科技(深圳)有限公司 一种数据文件的增量更新方法和服务器、客户端以及系统
CN106648712A (zh) * 2017-02-27 2017-05-10 百度在线网络技术(北京)有限公司 增量更新包的生成方法、装置和服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《git如何实现增量上线 实现前端资源增量式更新的一种思路》;慕筱技术进阶日志;《https://blog.csdn.net/peterxiaoq/article/details/76173699》;20170727;第1-6页 *

Also Published As

Publication number Publication date
CN110032388A (zh) 2019-07-19

Similar Documents

Publication Publication Date Title
CN110032388B (zh) 一种增量文件的构建、发布、下载方法及装置
CN110806868B (zh) 一种单页面搭建及加载方法
CN111090433A (zh) 一种数据处理的方法、装置和存储介质
CN107943465B (zh) 一种生成html表单的方法及装置
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
US20130159978A1 (en) State capture after execution in dependent sequences
CN104423961A (zh) 一种生成测试脚本的方法及系统
CN108694049B (zh) 一种更新软件的方法和设备
CN115268879A (zh) 代码处理方法、装置、电子设备及存储介质
CN111107133A (zh) 差异包的生成方法、数据更新方法、装置和存储介质
CN101876998A (zh) 一种实现数据编辑的方法和系统
CN111796855B (zh) 一种增量版本更新方法、装置、存储介质及计算机设备
CN108874379B (zh) 页面的处理方法及装置
CN112000334A (zh) 页面开发方法、装置、服务器及存储介质
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN113126998B (zh) 一种增量源码获取方法、装置、电子设备及存储介质
CN112328241B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
CN113360156B (zh) 一种ios编译方法及相关设备
CN114840822A (zh) 代码保护方法、装置、设备及存储介质
CN113918198A (zh) 一种模型-代码同步方法
CN114253595A (zh) 代码仓库管理方法、装置、计算机设备及存储介质
CN110554867B (zh) 一种应用程序的处理方法和装置
Kyriakou et al. Enhancing C/C++ based OSS development and discoverability with CBRJS: A Rust/Node. js/WebAssembly framework for repackaging legacy codebases
CN111428209A (zh) 一种应用程序的混淆方法、装置及存储介质
CN107479899B (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
TA01 Transfer of patent application right

Effective date of registration: 20200929

Address after: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200929

Address after: 27 Hospital Road, George Town, Grand Cayman ky1-9008

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant