CN104462469A - 网站静态文件的更新方法和装置 - Google Patents

网站静态文件的更新方法和装置 Download PDF

Info

Publication number
CN104462469A
CN104462469A CN201410788849.XA CN201410788849A CN104462469A CN 104462469 A CN104462469 A CN 104462469A CN 201410788849 A CN201410788849 A CN 201410788849A CN 104462469 A CN104462469 A CN 104462469A
Authority
CN
China
Prior art keywords
static file
redaction
piecemeal
code segment
renewal code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410788849.XA
Other languages
English (en)
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.)
Beijing Xiaomi Technology Co Ltd
Xiaomi Inc
Original Assignee
Xiaomi Inc
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 Xiaomi Inc filed Critical Xiaomi Inc
Priority to CN201410788849.XA priority Critical patent/CN104462469A/zh
Publication of CN104462469A publication Critical patent/CN104462469A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Abstract

本公开提出一种网站静态文件的更新方法,所述方法包括:将旧版本静态文件分割成预设大小的若干分块;向服务端发起在新版静态文件中针对每一个分块的分块查找;接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。本公开可以节省下载流量。

Description

网站静态文件的更新方法和装置
技术领域
本公开涉及通讯领域,尤其涉及网站静态文件的更新方法和装置。
背景技术
随着web前端技术的发展,具有丰富的前端交互的富客户端的站点越来越多,丰富的前端交互需要下载大量的javascript和css代码,因此如果用户的网络带宽有限,该用户在访问富客户端的站点时,为用户节省下载javascript和css代码的流量,就变得很有必要。
发明内容
为克服相关技术中存在的问题,本公开提供一种网站静态文件的更新方法和网站静态文件的更新装置。
根据本公开实施例的第一方面,提供一种网站静态文件的更新方法,所述方法包括:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
可选的,所述将旧版本静态文件分割成预设大小的若干分块之前,还包括:
向服务端获取新版本静态文件的版本号;
判断获取到的所述新版本静态文件的版本号与本地存储的静态文件的版本号是否相同;
当所述新版本静态文件的版本号与本地存储的静态文件的版本号相同时,通过预设应用接口调用本地存储的静态文件;
当所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,确定本地存储的静态文件为旧版本静态文件。
可选的,所述根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件包括:
根据所述查找到的分块的标识确定所述旧版本静态文件中的未更新分块;
基于所述更新代码段在所述新版本静态文件中的位置信息对所述未更新分块以及所述更新代码段进行拼接,以在本地生成所述新版本的静态文件。
根据本公开实施例的第二方面,提供一种网站静态文件的更新方法,所述方法包括:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
可选的,所述在新版静态文件中发起针对每一个旧版本静态文件分块的分块查找包括:
分块查找开始时,从新版本静态文件的起始位置划分出一个与所述旧版本静态文件分块等大小的动态文件分块;
对所述旧版本静态文件与所述动态文件分块进行分块匹配;
如果所述动态文件分块与所述旧版本静态文件分块相匹配,记录所述旧版本静态文件分块的标识以及该动态文件分块在新版本静态文件中的位置信息;
如果所述动态文件分块与所述旧版本静态文件分块不匹配,将所述动态文件分块前移一个字符,并继续进行分块匹配;当遍历所述新版本静态文件后,仍然未匹配到与所述旧版本静态文件分块相匹配的动态文件分块时,继续针对下一个旧版本静态文件分块进行分块匹配,直到所有的旧版本静态文件分块均匹配完成。
可选的,所述根据分块查找结果确定所述新版本静态文件的更新代码段包括:
当所述分块查找完成后,获取已记录的所述位置信息;从所述新版本静态文件中所述位置信息以外的位置上读取文件;
确定读取到的文件为所述更新代码段,并将所述位置信息以外的位置记录为所述更新代码段在所述新版本静态文件中的位置信息。
根据本公开实施例的第三方面,提供一种网站静态文件的更新装置,所述装置包括:
分割模块,用于将旧版本静态文件分割成预设大小的若干分块;
发起模块,用于向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收模块,用于接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
拼接模块,用于根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
可选的,所述装置还包括:
获取模块,用于向服务端获取新版本静态文件的版本号;
判断模块,用于判断获取到的所述新版本静态文件的版本号与本地存储的静态文件的版本号是否相同;
调用模块,用于在所述新版本静态文件的版本号与本地存储的静态文件的版本号相同时,通过预设应用接口调用本地存储的静态文件;
第一确定模块,用于在所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,确定本地存储的静态文件为旧版本静态文件。
可选的,所述拼接模块包括:
第一确定子模块,用于根据所述查找到的分块的标识确定所述旧版本静态文件中的未更新分块;
拼接子模块,用于基于所述更新代码段在所述新版本静态文件中的位置信息对所述未更新分块以及所述更新代码段进行拼接,以在本地生成所述新版本的静态文件。
根据本公开实施例的第四方面,提供一种网站静态文件的更新装置,所述装置包括:
查找模块,用于在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
第二确定模块,用于在所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
发送模块,用于将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
可选的,所述查找模块包括:
划分子模块,用于在分块查找开始时,从新版本静态文件的起始位置划分出一个与所述旧版本静态文件分块等大小的动态文件分块;
匹配子模块,用于对所述旧版本静态文件与所述动态文件分块进行分块匹配;
记录子模块,用于在所述动态文件分块与所述旧版本静态文件分块相匹配时,记录所述旧版本静态文件分块的标识以及该动态文件分块在新版本静态文件中的位置信息;
前移子模块,用于在所述动态文件分块与所述旧版本静态文件分块不匹配,将所述动态文件分块前移一个字符,并继续由所述匹配子模块进行分块匹配;当遍历所述新版本静态文件后,所述匹配子模块仍然未匹配到与所述旧版本静态文件分块相匹配的动态文件分块时,继续针对下一个旧版本静态文件分块进行分块匹配,直到所有的旧版本静态文件分块均匹配完成。
可选的,所述第二确定模块包括:
获取子模块,用于在所述分块查找完成后,获取已记录的所述位置信息;
读取子模块,用于从所述新版本静态文件中所述位置信息以外的位置上读取文件;
第二确定子模块,用于确定读取到的文件为所述更新代码段,并将所述位置信息以外的位置记录为所述更新代码段在所述新版本静态文件中的位置信息。
根据本公开实施例的第五方面,提供一种网站静态文件的更新装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
根据本公开实施例的第六方面,提供一种网站静态文件的更新装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开的以上实施例中,通过终端将旧版本静态文件分割成预设大小的若干分块,并向服务端发起在新版静态文件中针对每一个分块的分块查找;服务端完成针对所述每一个分块的分块查找后,根据分块查找结果确定新版本静态文件的更新代码段,并将查找结果以及确定出的更新代码段信息发送给终端;由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,使得终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种网站静态文件的更新方法的流程示意图;
图2是根据一示例性实施例示出的另一种网站静态文件的更新方法的流程示意图;
图3是根据一示例性实施例示出的另一种网站静态文件的更新方法的流程示意图;
图4是根据一示例性实施例示出的一种网站静态文件的更新装置的示意框图;
图5是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图;
图6是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图;
图7是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图;
图8是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图
图9是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图
图10是根据一示例性实施例示出的一种用于所述网站静态文件的更新装置的一结构示意图;
图11是根据一示例性实施例示出的一种用于所述网站静态文件的更新装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在现有实现中,传统的javascript和css静态文件一般是通过CDN(Content Delivery Distribution,内容分发网络)技术,采用HTTP Cache相关的协议(例如max-age,last-modified,etag等协议)进行缓存的。然而,在快速迭代的产品中,由于代码经常性的更改,因此采用上述方式对javascript和css等静态文件进行缓存,即使是只改了一行代码,还是需要全量下载整个javascript或css文件,非常的耗费流量。
有鉴于此,本公开提出一种网站静态文件的更新方法,通过终端将旧版本静态文件分割成预设大小的若干分块,并向服务端发起在新版静态文件中针对每一个分块的分块查找;服务端完成针对所述每一个分块的分块查找后,根据分块查找结果确定新版本静态文件的更新代码段,并将查找结果以及确定出的更新代码段信息发送给终端;由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,使得终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
如图1所示,图1是根据一示例性实施例示出的一种网站静态文件的更新方法,该网站静态文件的更新方法用于终端中,包括以下步骤:
在步骤101中,将旧版本静态文件分割成预设大小的若干分块;
在步骤102中,向服务端发起在新版静态文件中针对每一个分块的分块查找;
在本实施例中,所述静态文件可以包括终端上的浏览器在为用户渲染网页页面时,所要加载的一些来源于访问页面的服务端上的javascript和css代码。浏览器在载入所述静态文件时,首先要对本地存储的静态文件进行更新检查,以确认本地存储的静态文件是否为新版本的静态文件。
在实现时,可以在浏览器的网页上写入一个javascript变量用于从服务端获取新版本静态文件的版本号,然后将所述新版本静态文件的版本号与本地存储的静态文件的版本号进行比对;如果二者相同,表明本地存储的静态文件已为新版本的静态文件,此时可以直接通过预设应用接口(例如javascriptAPI接口)调用本地存储的静态文件进行加载;如果二者不相同,则确定本地存储的静态文件为旧版本静态文件;当确定出本地存储的静态文件为旧版本静态文件时,浏览器可以通过与服务端进行交互来拉取所述新版本静态文件存储到本地,然后加载所述新版本静态文件。
其中,浏览器在本地存储静态文件时,可以采用类似于HTML5localstorage等本地存储技术;所述HTML5localstorage是浏览器支持的一种key-value型的数据存储技术,已存储的静态文件可以通过相关的javascriptAPI接口进行调用,通常标准的localstorage可以存储5M的数据,因此HTML5localstorage技术在实现时可适用于大多数主流网站。
在现有实现中,浏览器向服务端拉取新版本静态文件,通常是将整个新版本静态文件全部下载到本地,而在本实施例中,浏览器在向服务端拉取新版本静态文件时,可以通过与服务端的交互只将所述新版本静态文件中发生更新的代码段下载到本地,从而达到为用户节省下载流量的目的。
在实现时,当浏览器通过比对确定出所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,此时本地存储的静态文件为旧版本静态文件,浏览器可以将所述旧版本静态文件分割成预设大小的若干分块,然后向服务端发起在新版静态文件中针对每一个分块进行分块查找。
其中,浏览器在对旧版本静态文件进行分块时,可以按照预设的大小将旧版本静态文件分割成若干分块,并分别进行编号,同时为了保证分块的信息完整性,浏览器在对旧版本静态文件进行分块时,可以针对每一个分块分别计算MD5值,然后将计算出的每一个分块的MD5值存入一个列表(map)中,此时该列表可用于描述分块后的旧版本静态文件。
浏览器向服务端发起分块查找,可以是通过向服务端发送一个分块查找请求来实现;该分块查找请求中可以携带上述用于存放每一个分块的MD5值的列表以及分块大小等信息,服务端在收到该分块查找请求后,可以开始在新版本静态文件中针对每一个分块进行分块查找。
在分块查找开始时,服务端可以按照所述列表中分块的编号顺序依次进行查找,服务端可以从列表中读取首个分块,并从新版本静态文件的起始位置划分出一个与首个分块等大小的动态文件分块,然后对所述旧版本静态文件与所述动态文件分块进行分块匹配。其中,对旧版本静态文件与所述动态文件分块进行分块匹配,可以通过分别计算MD5值,然后基于MD5值进行匹配来实现。
在实现时,服务端可以计算所述动态文件分块的MD5值,并将计算出的MD5值与列表中记录的首个分块的MD5值进行比对,如果计算出的MD5值与列表中记录的MD5值相同,则可以确定所述首个分块与所述动态文件分块相匹配,可以在本地记录该分块的编号,以及该动态文件分块在新版本静态文件中的位置信息(即在新版本静态文件中查找到所述首个分块的位置)。当然,如果计算出的MD5值与列表中记录的MD5值不相同时,可以将所述动态文件分块前移一个字符,并重新计算所述动态文件分块的MD5值,再重复以上过程。如果服务端通过前移所述动态文件分块,遍历了所述新版本静态文件后,仍然未匹配到与所述首个分块相匹配的动态文件分块时,则继续针对下一个分块继续进行分块匹配,直到列表中所有的分块全部匹配完成。
在步骤103中,接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;
在本实施例中,当服务端完成针对所述每一个分块的分块查找后,可以根据分块查找结果,即服务端已记录的所述位置信息来确定新版本静态文件的更新代码段。其中所述更新代码段是指,新版本静态文件与旧版静态文件相比的差异部分。
由于服务端已记录的所述位置信息,即为在新版本静态文件中进行分块查找后查找到的旧版本静态文件分块所在的位置,因此所述新版本静态文件中该位置信息以外的位置上的文件,即为更新后的文件。从而,服务端可以从所述新版本静态文件中所述位置信息以外的位置上读取文件,然后将读取到的文件确定为所述更新代码段,并同时在本地将所述位置信息以外的位置记录为所述更新代码段在新版本静态文件中的位置信息。
当服务端确定出所述更新代码段以及所述更新代码段在所述新版本的静态文件中的位置信息后,由于服务端在此之前已经记录了查找到的旧版本静态文件分块的编码,因此可以将记录的旧版本静态文件的编号作为分块查找结果发送给终端上的浏览器,将确定出的所述更新代码段以及记录的所述更新代码段在所述新版本的静态文件中的位置信息作为更新代码段信息发送给终端上的浏览器。
在步骤104中,根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
在本实施例中,当终端上的浏览器收到服务端发送的分块查找结果以及所述更新代码段信息后,由于此时所述分块查找结果中包括服务端在新版本静态文件中查找到的旧版本静态文件分块的编号;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,因此所述浏览器可以根据上述信息在本地拼接出所述新版本的静态文件。
例如,假设旧版本静态文件被分为6个块,分别编号为chunk0~chunk5,假设服务端在分块查找后,记录的查找到的分块编号为chunk3~chunk5,确定出的更新代码段为code1,由于chunk3~chunk5在新旧版本的静态文件中未发生更新,因此终端的浏览器基于code1在新版本静态文件中的位置,可以将chunk3~chunk5和code1拼接出新版本的静态文件。
当终端上的浏览器拼接处新版本的静态文件后,可以将所述静态文件在本地存储,后续可以直接通过预设应用接口进行调用和加载。
在以上实施例中,终端通过将旧版本静态文件分割成预设大小的若干分块,向服务端发起在新版静态文件中针对每一个分块的分块查找;当接收到服务端发送的分块查找结果,以及新版本静态文件的更新代码段信息后,由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,因此终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,而不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
如图2所示,图2是根据一示例性实施例示出的另一种网站静态文件的更新方法,该方法用于服务端中,所述方法包括以下步骤:
在步骤201中,在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
在本实施例中,所述静态文件可以包括终端上的浏览器在为用户渲染网页页面时,所要加载的一些来源于访问页面的服务端上的javascript和css代码。终端上的浏览器在载入所述静态文件时,通常首先要对其本地存储的静态文件进行更新检查,以确认其本地存储的静态文件是否为新版本的静态文件。
在实现时,可以在浏览器的网页上写入一个javascript变量用于从服务端本地获取新版本静态文件的版本号,然后浏览器将所述新版本静态文件的版本号与其本地存储的静态文件的版本号进行比对;如果二者相同,表明其本地存储的静态文件已为新版本的静态文件,此时浏览器可以直接通过预设应用接口(例如javascript API接口)调用其本地存储的静态文件进行加载;如果二者不相同,则确定其本地存储的静态文件为旧版本静态文件;当确定出其本地存储的静态文件为旧版本静态文件时,浏览器可以通过与服务端进行交互来拉取所述新版本静态文件存储到其本地,然后加载所述新版本静态文件。
在现有实现中,浏览器向服务端拉取新版本静态文件,通常是将整个新版本静态文件全部下载到本地,而在本实施例中,浏览器在向服务端拉取新版本静态文件时,可以通过与服务端的交互只将所述新版本静态文件中发生更新的代码段下载到本地,从而达到为用户节省下载流量的目的。
在实现时,当浏览器通过比对确定出所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,此时其本地存储的静态文件为旧版本静态文件,浏览器可以将所述旧版本静态文件分割成预设大小的若干分块,然后向服务端发起在新版静态文件中针对每一个分块进行分块查找。当然,如果服务端本地也存储了所述旧版本静态文件时,对旧版本静态文静进行分块也可以由服务端来进行。
其中,浏览器在对旧版本静态文件进行分块时,可以按照预设的大小将旧版本静态文件分割成若干分块,并分别进行编号,同时为了保证分块的信息完整性,在对旧版本静态文件进行分块时,可以针对每一个分块分别计算MD5值,然后将计算出的每一个分块的MD5值存入一个列表(map)中,此时该列表可用于描述分块后的旧版本静态文件。
浏览器向服务端发起分块查找,可以是通过向服务端发送一个分块查找请求来实现;该分块查找请求中可以携带上述用于存放每一个分块的MD5值的列表以及分块大小等信息,服务端在收到该分块查找请求后,可以开始在新版本静态文件中针对每一个分块进行分块查找。
在分块查找开始时,服务端可以按照所述列表中分块的编号顺序依次进行查找,服务端可以从列表中读取首个分块,并从新版本静态文件的起始位置划分出一个与首个分块等大小的动态文件分块,然后对所述旧版本静态文件与所述动态文件分块进行分块匹配。其中,对旧版本静态文件与所述动态文件分块进行分块匹配,可以通过分别计算MD5值,然后基于MD5值进行匹配来实现。
在实现时,服务端可以计算所述动态文件分块的MD5值,并将计算出的MD5值与列表中记录的首个分块的MD5值进行比对,如果计算出的MD5值与列表中记录的MD5值相同,则可以确定所述首个分块与所述动态文件分块相匹配,可以在本地记录该分块的编号,以及该动态文件分块在新版本静态文件中的位置信息(即在新版本静态文件中查找到所述首个分块的位置)。当然,如果计算出的MD5值与列表中记录的MD5值不相同时,可以将所述动态文件分块前移一个字符,并重新计算所述动态文件分块的MD5值,再重复以上过程。如果服务端通过前移所述动态文件分块,遍历了所述新版本静态文件后,仍然未匹配到与所述首个分块相匹配的动态文件分块时,则继续针对下一个分块继续进行分块匹配,直到列表中所有的分块全部匹配完成。
在步骤202中,当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
在步骤203中,将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
在本实施例中,当服务端完成针对所述每一个分块的分块查找后,可以根据分块查找结果,即服务端已记录的所述位置信息来确定新版本静态文件的更新代码段。其中所述更新代码段是指,新版本静态文件与旧版静态文件相比的差异部分。
由于服务端已记录的所述位置信息,即为在新版本静态文件中进行分块查找后查找到的旧版本静态文件分块所在的位置,因此所述新版本静态文件中该位置信息以外的位置上的文件,即为更新后的文件。
从而,服务端可以从所述新版本静态文件中所述位置信息以外的位置上读取文件,然后将读取到的文件确定为所述更新代码段,并同时在本地将所述位置信息以外的位置记录为所述更新代码段在新版本静态文件中的位置信息。
当服务端确定出所述更新代码段以及所述更新代码段在所述新版本的静态文件中的位置信息后,由于服务端在此之前已经记录了查找到的旧版本静态文件分块的编码,因此可以将记录的旧版本静态文件的编号作为分块查找结果发送给终端上的浏览器,将确定出的所述更新代码段以及记录的所述更新代码段在所述新版本的静态文件中的位置信息作为更新代码段信息发送给终端上的浏览器,从而使得终端上的浏览器可以根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
在以上实施例中,终端通过将旧版本静态文件分割成预设大小的若干分块,向服务端发起在新版静态文件中针对每一个分块的分块查找;当服务端完成所述分块查找后,可以将分块查找结果,以及新版本静态文件的更新代码段信息发送给终端,由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,使得终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,而不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
如图3所示,图3是根据一示例性实施例示出的另一种网站静态文件的更新方法,所述方法包括以下步骤:
在步骤301中,终端将旧版本静态文件分割成预设大小的若干分块;
在步骤302中,终端向服务端发起在新版静态文件中针对每一个分块的分块查找;
在步骤303中,服务端在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;
在步骤304中,当所述分块查找完成后,服务端根据分块查找结果确定所述新版本静态文件的更新代码段;
在步骤305中,服务端将分块查找结果以及确定出的更新代码段信息发送给所述终端;
在步骤306中,终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
在本实施例中,所述静态文件可以包括终端上的浏览器在为用户渲染网页页面时,所要加载的一些来源于访问页面的服务端上的javascript和css代码。浏览器在载入所述静态文件时,首先要对本地存储的静态文件进行更新检查,以确认本地存储的静态文件是否为新版本的静态文件。
在实现时,可以在浏览器的网页上写入一个javascript变量用于从服务端获取新版本静态文件的版本号,然后将所述新版本静态文件的版本号与本地存储的静态文件的版本号进行比对;如果二者相同,表明本地存储的静态文件已为新版本的静态文件,此时可以直接通过预设应用接口(例如javascriptAPI接口)调用本地存储的静态文件进行加载;如果二者不相同,则确定本地存储的静态文件为旧版本静态文件;当确定出本地存储的静态文件为旧版本静态文件时,浏览器可以通过与服务端进行交互来拉取所述新版本静态文件存储到本地,然后加载所述新版本静态文件。
其中,浏览器在本地存储静态文件时,可以采用类似于HTML5localstorage等本地存储技术;所述HTML5localstorage是浏览器支持的一种key-value型的数据存储技术,已存储的静态文件可以通过相关的javascriptAPI接口进行调用,通常标准的localstorage可以存储5M的数据,因此HTML5localstorage技术在实现时可适用于大多数主流网站。
在现有实现中,终端上的浏览器向服务端拉取新版本静态文件,通常是将整个新版本静态文件全部下载到本地,而在本实施例中,浏览器在向服务端拉取新版本静态文件时,可以通过与服务端的交互只将所述新版本静态文件中发生更新的代码段下载到本地,从而达到为用户节省下载流量的目的。
在实现时,当浏览器通过比对确定出所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,此时本地存储的静态文件为旧版本静态文件,浏览器可以将所述旧版本静态文件分割成预设大小的若干分块,然后向服务端发起在新版静态文件中针对每一个分块进行分块查找。当然,如果服务端本地也存储了所述旧版本静态文件时,对旧版本静态文静进行分块也可以由服务端来进行。
其中,浏览器在对旧版本静态文件进行分块时,可以按照预设的大小将旧版本静态文件分割成若干分块,并分别进行编号;同时为了保证分块的信息完整性,浏览器在对旧版本静态文件进行分块时,可以针对每一个分块分别计算MD5值,然后将计算出的每一个分块的MD5值存入一个列表(map)中,此时该列表可用于描述分块后的旧版本静态文件。
在本实施例中,浏览器向服务端发起分块查找,可以是通过向服务端发送一个分块查找请求来实现;该分块查找请求中可以携带上述用于存放每一个分块的MD5值的列表以及分块大小等信息,服务端在收到该分块查找请求后,可以开始在新版本静态文件中针对每一个分块进行分块查找。
在分块查找开始时,服务端可以按照所述列表中分块的编号顺序依次进行查找,服务端可以从列表中读取首个分块,并从新版本静态文件的起始位置划分出一个与首个分块等大小的动态文件分块,然后对所述旧版本静态文件与所述动态文件分块进行分块匹配。其中,对旧版本静态文件与所述动态文件分块进行分块匹配,可以通过分别计算MD5值,然后基于MD5值进行匹配来实现。
在实现时,服务端可以计算所述动态文件分块的MD5值,并将计算出的MD5值与列表中记录的首个分块的MD5值进行比对,如果计算出的MD5值与列表中记录的MD5值相同,则可以确定所述首个分块与所述动态文件分块相匹配,可以在本地记录该分块的编号,以及该动态文件分块在新版本静态文件中的位置信息。当然,如果计算出的MD5值与列表中记录的MD5值不相同时,可以将所述动态文件分块前移一个字符,并重新计算所述动态文件分块的MD5值,再重复以上过程。如果服务端通过前移所述动态文件分块,遍历了所述新版本静态文件后,仍然未匹配到与所述首个分块相匹配的动态文件分块时,则继续针对下一个分块继续进行分块匹配,直到列表中所有的分块全部匹配完成。
在本实施例中,当服务端完成针对所述每一个分块的分块查找后,可以根据分块查找结果,即服务端已记录的所述位置信息来确定新版本静态文件的更新代码段。其中所述更新代码段是指,新版本静态文件与旧版静态文件相比的差异部分。
由于服务端已记录的所述位置信息,即为在新版本静态文件中进行分块查找后查找到的旧版本静态文件分块所在的位置,因此所述新版本静态文件中该位置信息以外的位置上的文件,即为更新后的文件。从而,服务端可以从所述新版本静态文件中所述位置信息以外的位置上读取文件,然后将读取到的文件确定为所述更新代码段,并同时在本地将所述位置信息以外的位置记录为所述更新代码段在新版本静态文件中的位置信息。
当服务端确定出所述更新代码段以及所述更新代码段在所述新版本的静态文件中的位置信息后,由于服务端在此之前已经记录了查找到的旧版本静态文件分块的编码,因此可以将记录的旧版本静态文件的编号作为分块查找结果发送给终端上的浏览器,将确定出的所述更新代码段以及记录的所述更新代码段在所述新版本的静态文件中的位置信息作为更新代码段信息发送给终端上的浏览器。
当终端上的浏览器收到服务端发送的分块查找结果以及所述更新代码段信息后,由于此时所述分块查找结果中包括服务端在新版本静态文件中查找到的旧版本静态文件分块的编号;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,因此所述浏览器可以根据上述信息在本地拼接出所述新版本的静态文件。当终端上的浏览器拼接处新版本的静态文件后,可以将所述静态文件在本地存储,后续可以直接通过预设应用接口进行调用和加载。
例如,假设旧版本静态文件为abcdefghijklmnopqrstuvwx,设定的分块长度为4,则旧版本静态文件可以分割为以下6个分块:
chunk0 chunk1 chunk2 chunk3 chunk4 chunk5
abcd efgh ijkl mnop qrst uvwx
假设分块chunk0~chunk5计算出的MD5值分别为MD-0~MD-5,此时用于描述分块后的旧版本静态文件的列表(Map)如下:
chunk0 chunk1 chunk2 chunk3 chunk4 chunk5
MD-0 MD-1 MD-2 MD-3 MD-4 MD-5
浏览器在向服务端发起在新版本静态文件中针对每一个分块的分块查找时,可以向服务端发送一个分块查找请求,该分块请求中可以携带上述列表以及预设的分块大小。
假设新版本静态文件为1bcdef35ghilmnopqrstuvwx,服务端可以从新版本静态文件的起始位置开始,划分出一个大小为4字符的动态文件分块,此时该动态文件分块为1bcd,于是服务端对1bcd进行MD5值的计算,再与chunk0的MD5值MD-0进行匹配;由于此时该动态文件分块的内容与chunk0不相同,计算出的MD5值也不相同,于是服务端可以将动态文件分块前移一个字符,此时该动态文件分块为bcde,于是服务端对bcde进行MD5值的计算,再与chunk0的MD5值MD-0进行匹配;由于此时该动态文件分块的内容与chunk0不相同,计算出的MD5值也不相同,于是再次将该动态文件分块前移一个字符。
当通过前移所述动态文件分块遍历了所述新版本静态文件后,仍未查找到与chunk0相匹配的文件块时,则按照上述执行过程继续针对chunk1进行分块匹配,并重复执行以上步骤。
当按照分块顺序,在新版本静态文件中针对chunk3进行分块查找时,仍然划分出一个大小为4字符的动态文件分块,此时该动态文件分块仍为1bcd,通过匹配后发现1bcd的MD5值与chunk3的MD5值MD-3不相同,于是将动态文件分块前移一个字符,并继续进行匹配。
当所述动态文件分块前移至mnop时,由于此时该动态文件分块的内容与chunk3的内容相同,计算出的MD5值同为MD-3,此时该动态文件分块与chunk3匹配,服务端在新版本静态文件中成功查找到了chunk3,于是服务端记录chunk3的编号,以及当前该动态文件分块在新版本静态文件中的位置(即查找到chunk3的位置),并继续在新版本静态文件中针对chunk4和chunk5进行分块查找。
按照同样的方法,服务端在新版本静态文件中也能成功查找到chunk4和chunk5,最终服务端记录的分块编号为chunk3、chunk4、chunk5,而且服务端同时记录了在新版本静态文件中查找到chunk3、chunk4、chunk5的位置。
当分块查找结束后,服务端可以从新版静态文件中除了记录的查找到chunk3、chunk4、chunk5的位置以外的位置上读取文件,此时读取的文件为1bcdef35ghil,该读取到的文件1bcdef35ghil即为所述新版本静态文件的更新代码段,其在新版本静态文件中的位置为前12个字符。
终端上的浏览器在根据上述信息拼接新版本静态文件时,由于在新版本静态文件中成功查找到chunk3、chunk4、chunk5,这三个分块的内容和位置均未发生变化,于是终端上的浏览器可以将所述更新代码段放置在前12个字符与chunk3、chunk4、chunk5进行拼接,拼接后的静态文件如下:
更新代码段 chunk3 chunk4 chunk5
1bcdef35ghil MD3 MD4 MD5
自此,新版静态文件拼接完成,终端可以将拼接完成后的静态文件在本地存储,后续可以通过预设的应用接口直接从本地直接调用加载。
在以上实施例中,通过终端将旧版本静态文件分割成预设大小的若干分块,并向服务端发起在新版静态文件中针对每一个分块的分块查找;服务端完成针对所述每一个分块的分块查找后,根据分块查找结果确定新版本静态文件的更新代码段,并将查找结果以及确定出的更新代码段信息发送给终端;由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,使得终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
与前述网站静态文件的更新方法实施例相对应,本公开还提供了一种网站静态文件的更新装置的实施例。
图4是根据一示例性实施例示出的一种网站静态文件的更新装置的示意框图。
如图4所示,根据一示例性实施例示出的一种网站静态文件的更新装置400,应用在终端,包括:分割模块401、发起模块402、接收模块403以及拼接模块404;其中:
所述分割模块401被配置为,将旧版本静态文件分割成预设大小的若干分块;
所述发起模块402被配置为,向服务端发起在新版静态文件中针对每一个分块的分块查找;
所述接收模块403被配置为,接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
所述拼接模块404被配置为,根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
在以上实施例中,终端通过将旧版本静态文件分割成预设大小的若干分块,向服务端发起在新版静态文件中针对每一个分块的分块查找;当接收到服务端发送的分块查找结果,以及新版本静态文件的更新代码段信息后,由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,因此终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,而不需要将新版本的静态文件全部下载到本地,从而节省了下载流量
请参见图5,图5是本公开根据一示例性实施例示出的另一种网站静态文件的更新装置的框图,该实施例在前述图4所示实施例的基础上,所述装置400可以包括获取模块405、判断模块406、调用模块407和第一确定模块408;其中:
所述获取模块405被配置为,向服务端获取新版本静态文件的版本号;
所述判断模块406被配置为,判断获取到的所述新版本静态文件的版本号与本地存储的静态文件的版本号是否相同;
所述调用模块407被配置为,在所述新版本静态文件的版本号与本地存储的静态文件的版本号相同时,通过预设应用接口调用本地存储的静态文件;
所述第一确定模块408被配置为,在所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,确定本地存储的静态文件为旧版本静态文件。
请参见图6,图6是本公开根据一示例性实施例示出的另一种网站静态文件的更新装置的框图,该实施例在前述图4所示实施例的基础上,所述拼接模块404可以包括第一确定子模块404A、拼接子模块404B;其中:
所述第一确定子模块404A被配置为,根据所述查找到的分块的标识确定所述旧版本静态文件中的未更新分块;
所述拼接子模块404B被配置为,基于所述更新代码段在所述新版本静态文件中的位置信息对所述未更新分块以及所述更新代码段进行拼接,以在本地生成所述新版本的静态文件。
需要说明的是,上述图6所示的装置实施例中示出的第一确定子模块404A、拼接子模块404B的结构也可以包含在前述图5的装置实施例中,对此本公开不进行限制。
图7是根据一示例性实施例示出的另一种网站静态文件的更新装置的示意框图。
如图7所示,根据一示例性实施例示出的一种网站静态文件的更新装置700,应用在服务端,包括:查找模块701、第二确定模块702以及发送模块703;其中:
所述查找模块701被配置为,在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
所述第二确定模块702被配置为,在所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
所述发送模块703被配置为,将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
在以上实施例中,终端通过将旧版本静态文件分割成预设大小的若干分块,向服务端发起在新版静态文件中针对每一个分块的分块查找;当服务端完成所述分块查找后,可以将分块查找结果,以及新版本静态文件的更新代码段信息发送给终端,由于所述查找结果包括服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息,使得终端可以只从服务端下载所述更新代码段,就可以根据所述查找结果以及所述更新代码段信息在本地拼接出所述新版本的静态文件,而不需要将新版本的静态文件全部下载到本地,从而节省了下载流量。
请参见图8,图8是本公开根据一示例性实施例示出的另一种网站静态文件的更新装置的框图,该实施例在前述图7所示实施例的基础上,所述查找模块701可以包括划分子模块701A、匹配子模块701B、;记录子模块701C以及前移子模块701D;其中:
所述划分子模块701A被配置为,在分块查找开始时,从新版本静态文件的起始位置划分出一个与所述旧版本静态文件分块等大小的动态文件分块;
所述匹配子模块701B被配置为,对所述旧版本静态文件与所述动态文件分块进行分块匹配;
所述记录子模块701C被配置为,在所述动态文件分块与所述旧版本静态文件分块相匹配时,记录所述旧版本静态文件分块的标识以及该动态文件分块在新版本静态文件中的位置信息;
所述前移子模块701D被配置为,在所述动态文件分块与所述旧版本静态文件分块不匹配,将所述动态文件分块前移一个字符,并继续由所述匹配子模块进行分块匹配;当遍历所述新版本静态文件后,所述匹配子模块仍然未匹配到与所述旧版本静态文件分块相匹配的动态文件分块时,继续针对下一个旧版本静态文件分块进行分块匹配,直到所有的旧版本静态文件分块均匹配完成。
请参见图9,图9是本公开根据一示例性实施例示出的另一种网站静态文件的更新装置的框图,该实施例在前述图7所示实施例的基础上,所述第二确定模块702可以包括获取子模块702A、读取子模块702B、;第二确定子模块702C;其中:
所述获取子模块702A被配置为,在所述分块查找完成后,获取已记录的所述位置信息;
所述读取子模块702B被配置为,从所述新版本静态文件中所述位置信息以外的位置上读取文件;
所述第二确定子模块702C被配置为,确定读取到的文件为所述更新代码段,并将所述位置信息以外的位置记录为所述更新代码段在所述新版本静态文件中的位置信息。
需要说明的是,上述图9所示的装置实施例中示出的获取子模块702A、读取子模块702B、;第二确定子模块702C的结构也可以包含在前述图8的装置实施例中,对此本公开不进行限制。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本公开还提供一种网站静态文件的更新装置,所述网站静态文件的更新装置包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
相应的,本公开还提供一种终端,所述终端包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
相应的,本公开还提供一种网站静态文件的更新装置,所述网站静态文件的更新装置包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
相应的,本公开还提供一种终端,所述终端包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
图10是根据一示例性实施例示出的一种网站静态文件的更新装置的结构示意图。
如图10所示,根据一示例性实施例示出的一种网站静态文件的更新装置1000,该装置1000可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图100,装置1000可以包括以下一个或多个组件:处理组件1001,存储器1002,电源组件1003,多媒体组件1004,音频组件1005,输入/输出(I/O)的接口1006,传感器组件1007,以及通信组件1008。
处理组件1001通常控制装置1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1001可以包括一个或多个处理器1009来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1001可以包括一个或多个模块,便于处理组件1001和其他组件之间的交互。例如,处理部件1001可以包括多媒体模块,以方便多媒体组件1004和处理组件1001之间的交互。
存储器1002被配置为存储各种类型的数据以支持在装置1000的操作。这些数据的示例包括用于在装置1000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1002可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1003为装置1000的各种组件提供电力。电源组件1003可以包括电源管理系统,一个或多个电源,及其他与为装置1000生成、管理和分配电力相关联的组件。
多媒体组件1004包括在所述装置1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1004包括一个前置摄像头和/或后置摄像头。当装置1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1005被配置为输出和/或输入音频信号。例如,音频组件1005包括一个麦克风(MIC),当装置1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1002或经由通信组件1008发送。在一些实施例中,音频组件1005还包括一个扬声器,用于输出音频信号。
I/O接口1002为处理组件1001和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1007包括一个或多个传感器,用于为装置1000提供各个方面的状态评估。例如,传感器组件1007可以检测到装置1000的打开/关闭状态,组件的相对定位,例如所述组件为装置1000的显示器和小键盘,传感器组件1007还可以检测装置1000或装置1000一个组件的位置改变,用户与装置1000接触的存在或不存在,装置1000方位或加速/减速和装置1000的温度变化。传感器组件1007可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1007还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1007还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1008被配置为便于装置1000和其他设备之间有线或无线方式的通信。装置1000可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1008经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1008还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1002,上述指令可由装置1000的处理器1009执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
其中,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种网站静态文件的更新方法,包括:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
相应的,本公开还提供另一种网站静态文件的更新装置,所述装置包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
图11是根据一示例性实施例示出的一种用于文件备份的装置1100的框图。例如,装置1100可以被提供为一服务器。参照图11,装置1100包括处理组件1122,其进一步包括一个或多个处理器,以及由存储器1132所代表的存储器资源,用于存储可由处理部件1122的执行的指令,例如应用程序。存储器1132中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1122被配置为执行指令,以执行上述文件备份方法。
装置1100还可以包括一个电源组件1126被配置为执行装置1100的电源管理,一个有线或无线网络接口1150被配置为将装置1100连接到网络,和一个输入输出(I/O)接口1158。装置1100可以操作基于存储在存储器1132的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种网站静态文件的更新方法,其特征在于,所述方法包括:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
2.如权利要求1所述的方法,其特征在于,所述将旧版本静态文件分割成预设大小的若干分块之前,还包括:
向服务端获取新版本静态文件的版本号;
判断获取到的所述新版本静态文件的版本号与本地存储的静态文件的版本号是否相同;
当所述新版本静态文件的版本号与本地存储的静态文件的版本号相同时,通过预设应用接口调用本地存储的静态文件;
当所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,确定本地存储的静态文件为旧版本静态文件。
3.如权利要求1所述的方法,其特征在于,所述根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件包括:
根据所述查找到的分块的标识确定所述旧版本静态文件中的未更新分块;
基于所述更新代码段在所述新版本静态文件中的位置信息对所述未更新分块以及所述更新代码段进行拼接,以在本地生成所述新版本的静态文件。
4.一种网站静态文件的更新方法,其特征在于,所述方法包括:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
5.如权利要求1所述的方法,其特征在于,所述在新版静态文件中发起针对每一个旧版本静态文件分块的分块查找包括:
分块查找开始时,从新版本静态文件的起始位置划分出一个与所述旧版本静态文件分块等大小的动态文件分块;
对所述旧版本静态文件与所述动态文件分块进行分块匹配;
如果所述动态文件分块与所述旧版本静态文件分块相匹配,记录所述旧版本静态文件分块的标识以及该动态文件分块在新版本静态文件中的位置信息;
如果所述动态文件分块与所述旧版本静态文件分块不匹配,将所述动态文件分块前移一个字符,并继续进行分块匹配;当遍历所述新版本静态文件后,仍然未匹配到与所述旧版本静态文件分块相匹配的动态文件分块时,继续针对下一个旧版本静态文件分块进行分块匹配,直到所有的旧版本静态文件分块均匹配完成。
6.如权利要求5所述的方法,其特征在于,所述根据分块查找结果确定所述新版本静态文件的更新代码段包括:
当所述分块查找完成后,获取已记录的所述位置信息;从所述新版本静态文件中所述位置信息以外的位置上读取文件;
确定读取到的文件为所述更新代码段,并将所述位置信息以外的位置记录为所述更新代码段在所述新版本静态文件中的位置信息。
7.一种网站静态文件的更新装置,其特征在于,所述装置包括:
分割模块,用于将旧版本静态文件分割成预设大小的若干分块;
发起模块,用于向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收模块,用于接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
拼接模块,用于根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
获取模块,用于向服务端获取新版本静态文件的版本号;
判断模块,用于判断获取到的所述新版本静态文件的版本号与本地存储的静态文件的版本号是否相同;
调用模块,用于在所述新版本静态文件的版本号与本地存储的静态文件的版本号相同时,通过预设应用接口调用本地存储的静态文件;
第一确定模块,用于在所述新版本静态文件的版本号与本地存储的静态文件的版本号不相同时,确定本地存储的静态文件为旧版本静态文件。
9.如权利要求7所述的装置,其特征在于,所述拼接模块包括:
第一确定子模块,用于根据所述查找到的分块的标识确定所述旧版本静态文件中的未更新分块;
拼接子模块,用于基于所述更新代码段在所述新版本静态文件中的位置信息对所述未更新分块以及所述更新代码段进行拼接,以在本地生成所述新版本的静态文件。
10.一种网站静态文件的更新装置,其特征在于,所述装置包括:
查找模块,用于在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
第二确定模块,用于在所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
发送模块,用于将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
11.如权利要求10所述的装置,其特征在于,所述查找模块包括:
划分子模块,用于在分块查找开始时,从新版本静态文件的起始位置划分出一个与所述旧版本静态文件分块等大小的动态文件分块;
匹配子模块,用于对所述旧版本静态文件与所述动态文件分块进行分块匹配;
记录子模块,用于在所述动态文件分块与所述旧版本静态文件分块相匹配时,记录所述旧版本静态文件分块的标识以及该动态文件分块在新版本静态文件中的位置信息;
前移子模块,用于在所述动态文件分块与所述旧版本静态文件分块不匹配,将所述动态文件分块前移一个字符,并继续由所述匹配子模块进行分块匹配;当遍历所述新版本静态文件后,所述匹配子模块仍然未匹配到与所述旧版本静态文件分块相匹配的动态文件分块时,继续针对下一个旧版本静态文件分块进行分块匹配,直到所有的旧版本静态文件分块均匹配完成。
12.如权利要求11所述的装置,其特征在于,所述第二确定模块包括:
获取子模块,用于在所述分块查找完成后,获取已记录的所述位置信息;
读取子模块,用于从所述新版本静态文件中所述位置信息以外的位置上读取文件;
第二确定子模块,用于确定读取到的文件为所述更新代码段,并将所述位置信息以外的位置记录为所述更新代码段在所述新版本静态文件中的位置信息。
13.一种网站静态文件的更新装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
将旧版本静态文件分割成预设大小的若干分块;
向服务端发起在新版静态文件中针对每一个分块的分块查找;
接收服务端发送的分块查找结果以及所述新版本静态文件的更新代码段信息;其中所述分块查找结果包括所述服务端在所述新版本静态文件中查找到的分块的标识;所述更新代码段信息包括服务端根据所述查找结果确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息;
根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件。
14.一种网站静态文件的更新装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在新版静态文件中针对每一个旧版本静态文件分块进行分块查找;其中所述分块查找是由终端发起的;
当所述分块查找完成后,根据分块查找结果确定所述新版本静态文件的更新代码段;
将分块查找结果以及确定出的更新代码段信息发送给所述终端,以使得所述终端根据所述分块查找结果与所述更新代码段信息在本地拼接出所述新版本的静态文件;
其中,所述查找结果包括在所述新版本静态文件中查找到的旧版本静态文件分块的标识;所述更新代码段信息包括确定出的更新代码段以及所述更新代码段在所述新版本静态文件中的位置信息。
CN201410788849.XA 2014-12-17 2014-12-17 网站静态文件的更新方法和装置 Pending CN104462469A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410788849.XA CN104462469A (zh) 2014-12-17 2014-12-17 网站静态文件的更新方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410788849.XA CN104462469A (zh) 2014-12-17 2014-12-17 网站静态文件的更新方法和装置

Publications (1)

Publication Number Publication Date
CN104462469A true CN104462469A (zh) 2015-03-25

Family

ID=52908504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410788849.XA Pending CN104462469A (zh) 2014-12-17 2014-12-17 网站静态文件的更新方法和装置

Country Status (1)

Country Link
CN (1) CN104462469A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104933085A (zh) * 2015-05-08 2015-09-23 小米科技有限责任公司 电子图书的更新方法、终端及服务器
CN105049486A (zh) * 2015-06-16 2015-11-11 腾讯科技(北京)有限公司 静态文件的版本管理、文件拉取控制方法、装置及系统
CN106843935A (zh) * 2016-12-29 2017-06-13 广州华多网络科技有限公司 一种自动更新静态文件版本号的方法及系统
CN108959063A (zh) * 2017-05-25 2018-12-07 北京京东尚科信息技术有限公司 一种程序执行的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0739514B1 (en) * 1994-01-03 2001-08-08 Norton-Lambert Corp. File transfer method and apparatus using hash numbers
US20090271779A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
CN102109989A (zh) * 2009-12-29 2011-06-29 阿里巴巴集团控股有限公司 一种控制浏览器缓存的方法、装置和系统
CN103729225A (zh) * 2014-01-22 2014-04-16 中国人民解放军国防科学技术大学 一种基于内容分块的远程文件实时更新方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0739514B1 (en) * 1994-01-03 2001-08-08 Norton-Lambert Corp. File transfer method and apparatus using hash numbers
US20090271779A1 (en) * 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
CN102109989A (zh) * 2009-12-29 2011-06-29 阿里巴巴集团控股有限公司 一种控制浏览器缓存的方法、装置和系统
CN103729225A (zh) * 2014-01-22 2014-04-16 中国人民解放军国防科学技术大学 一种基于内容分块的远程文件实时更新方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104933085A (zh) * 2015-05-08 2015-09-23 小米科技有限责任公司 电子图书的更新方法、终端及服务器
CN104933085B (zh) * 2015-05-08 2018-09-25 小米科技有限责任公司 电子图书的更新方法、终端及服务器
CN105049486A (zh) * 2015-06-16 2015-11-11 腾讯科技(北京)有限公司 静态文件的版本管理、文件拉取控制方法、装置及系统
CN105049486B (zh) * 2015-06-16 2019-03-26 腾讯科技(北京)有限公司 静态文件的版本管理方法、装置及系统
CN106843935A (zh) * 2016-12-29 2017-06-13 广州华多网络科技有限公司 一种自动更新静态文件版本号的方法及系统
CN108959063A (zh) * 2017-05-25 2018-12-07 北京京东尚科信息技术有限公司 一种程序执行的方法和装置

Similar Documents

Publication Publication Date Title
KR101757779B1 (ko) 라우터 관리 어플리케이션을 라우터 펌웨어와 호환 가능하도록 하기 위한 방법 및 장치
US11562074B2 (en) Firmware upgrade method and device, and storage medium
US10320719B2 (en) Message withdrawal method, apparatus and storage medium
CN104778063A (zh) 资源更新方法和装置
CN104484200A (zh) 对固件进行升级的方法及装置
RU2613028C2 (ru) Способ и устройство для резервного копирования файла
CN105491113A (zh) 迁移方法、装置及终端
CN112003893B (zh) 一种资源下载方法和装置
CN105204915A (zh) 应用程序更新方法、装置及系统
CN104469741A (zh) 终端配置方法和装置
CN107357613B (zh) 应用更新方法、装置及计算机可读存储介质
CN104216736A (zh) 增量升级方法、装置及终端设备
EP2348697B1 (en) Mobile terminal and controlling method thereof
CN105094931A (zh) 软件升级方法及装置
CN105511907A (zh) 应用程序升级方法、装置及系统
CN105094904A (zh) 安装应用程序的方法及装置
CN105808305A (zh) 静态资源的加载方法和装置
CN104462469A (zh) 网站静态文件的更新方法和装置
CN105446768A (zh) 系统升级方法及装置
CN105468417A (zh) 应用软件安装方法和装置
CN104063424B (zh) 网页图片的展现方法和展现装置
CN104965907A (zh) 结构化对象的生成方法及装置
CN104951337A (zh) 文件增量更新方法及装置
CN104933085A (zh) 电子图书的更新方法、终端及服务器
CN104125268A (zh) 文件下载方法、装置、路由设备及终端设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150325

RJ01 Rejection of invention patent application after publication