浏览器脚本的更新方法及系统与流程

文档序号:12362888阅读:874来源:国知局
浏览器脚本的更新方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种浏览器脚本的更新方法及系统。



背景技术:

目前浏览器脚本缓存通常都是采用脚本标签标记要加载的脚本,浏览器再根据标签中的脚本地址对脚本进行加载。脚本更新则需要下载整个新版本的脚本文件进行更新。

例如,公开号为CN 103823694 A的中国专利提供了一种脚本文件的更新方法,当检测出脚本文件有修改或更新时,实时将最新的脚本文件解析成语法树,并将解析后的语法树保存在语法树缓存区中,即完成了脚本文件的实时更新,同时浏览器也可实时应用到最新的脚本文件对应的语法树。

上述方法提高了用户实时浏览的效率,从而增强了用户体验。但是缓存的是整个脚本文件的语法树,下载时占用的带宽较大,非常浪费流量。



技术实现要素:

本发明所要解决的技术问题是:提供一种浏览器脚本的更新方法及系统,能够减少脚本更新时占用的带宽,提高更新速度。

为了解决上述技术问题,本发明采用的技术方案为:

一种浏览器脚本的更新方法,包括:

浏览器以Ajax请求的方式获取脚本;

将所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;

浏览器请求获取脚本时,若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包;

将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新。

本发明提供的另一个技术方案为:

一种浏览器脚本的更新系统,包括:

脚本获取模块,用于浏览器以Ajax请求的方式获取脚本;

执行模块,用于将所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

存储模块,用于将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;

增量包获取模块,用于浏览器请求获取脚本时,若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包;

更新模块,用于将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新。

本发明的有益效果在于:本发明以Ajax请求的方式获取脚本,能够将脚本存储到本地,每次请求获取脚本时先判断本地存储中是否存在需要的脚本,当本地存储中存在需要的脚本,且版本低于需求的版本时,通过增量更新的方式更新脚本,区别于现有技术中使用<script>标签标记要加载的脚本,浏览器再根据标签中的脚本地址对脚本进行加载的方法,具有本地存储中已经存在的脚本需要更新时,不需要重新下载整个脚本,减少了带宽占用,节省了流量。

附图说明

图1为本发明实施例的浏览器脚本的更新方法的流程图;

图2为本发明实施例的浏览器脚本的更新系统的结构示意图;

图3为本发明实施例二的浏览器脚本的更新系统的结构示意图。

标号说明:

1、脚本获取模块;2、执行模块;3、存储模块;4、增量包获取模块;41、第一获取模块;42、第一计算模块;5、更新模块;51、第二计算模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:以Ajax请求的方式获取脚本,脚本采用增量更新的方式进行更新。

本发明涉及的技术术语解释:

请参照图1,本发明提供:

一种浏览器脚本的更新方法,包括:

浏览器以Ajax请求的方式获取脚本;

将所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;

浏览器请求获取脚本时,若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包;

将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新。

从上述描述可知,本发明浏览器脚本的更新方法的有益效果在于:以Ajax请求的方式获取脚本,并采用增量更新的方式对本地存储中的脚本进行更新,节省了带宽资源。

进一步的,依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包,包括:

服务器依据所述请求中的脚本的地址获取与所述内容的散列对应的脚本;

服务器通过delta算法对所述本地存储中的脚本和获取的与所述内容的散列对应的脚本进行处理,生成增量包;

服务器将所述增量包发送至浏览器。

从上述描述可知,服务器根据浏览器发送的请求获取最新版本的脚本,并将该脚本与本地存储中的脚本进行计算生成增量包,再发送至浏览器,由于增量包要远小于整个脚本,因此大大节省了带宽资源。

进一步的,将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新,包括:

浏览器将所述增量包与所述本地存储中的脚本通过delta算法进行合并,生成最新版本的脚本文件。

从上述描述可知,由于浏览器从服务器获取的是增量包,因此需要将增量包与本地脚本进行计算生成最新版本的脚本文件。具体计算可选择不同算法,只要服务器和浏览器的计算对应即可。

进一步的,浏览器请求获取脚本时,若存在与请求的脚本地址相同的本地存储中的脚本、且请求的脚本的版本号小于或等于所述本地存储中的脚本的版本号,则获取所述本地存储中的脚本。

从上述描述可知,浏览器请求的脚本的地址在本地存储中已经存在,且版本号也相同,说明请求的脚本无需更新,直接从本地存储中获取即可,不需要再进行下载。

进一步的,将所述脚本按照Ajax请求的顺序以动态解析的方式逐个动态执行;将执行后的脚本的地址、版本号、内容、内容的散列以地址为索引存储至本地存储中,包括:

调用eval函数对所述脚本进行动态解释;

若所述脚本正确执行,则将所述脚本存储至本地存储中;

若所述脚本执行异常,则将所述脚本采用base64算法进行编码后存储至本地存储中。

从上述描述可知,脚本执行的方式是通过eval函数对脚本进行动态解释,也可采用其他能够实现相同效果的方法,对于执行成功的脚本,将其直接存储至本地,而对于执行失败的脚本则将其编码后再存储,减少数据量。

请参照图2,本发明的另一个技术方案为:

一种浏览器脚本的更新系统,包括:

脚本获取模块1,用于浏览器以Ajax请求的方式获取脚本;

执行模块2,用于将所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

存储模块3,用于将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;

增量包获取模块4,用于浏览器请求获取脚本时,若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包;

更新模块5,用于将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新。

进一步的,所述增量包获取模块4,包括:

第一获取模块41,用于服务器依据所述请求中的脚本的地址获取与所述内容的散列对应的脚本;

第一计算模块42,用于服务器通过delta算法对所述本地存储中的脚本和获取的与所述内容的散列对应的脚本进行处理,生成增量包;

发送模块43,用于服务器将所述增量包发送至浏览器。

从上述描述可知,服务器通过第一获取模块获取对应请求的最新版本的脚本,再通过第一计算模块计算出增量包,并经发送模块发送至浏览器。由于发送模块最终发送的是增量包,要比脚本小很多,极大的节省了流量。

进一步的,所述更新模块5包括:

第二计算模块51,用于浏览器将所述增量包与所述本地存储中的脚本通过delta算法进行合并,生成最新版本的脚本文件。

从上述描述可知,浏览器通过第二计算模块对增量包和本地脚本计算后生成新的脚本文件,完成更新。

进一步的,浏览器请求获取脚本时,若存在与请求的脚本地址相同的本地存储中的脚本、且请求的脚本的版本号小于或等于所述本地存储中的脚本的版本号,则获取所述本地存储中的脚本。

进一步的,所述执行模块2用于调用eval函数对所述脚本进行动态解释;所述存储模块3用于若所述脚本正确执行,则将所述脚本存储至本地存储中;若所述脚本执行异常,则将所述脚本采用base64算法进行编码后存储至本地存储中。

从上述描述可知,本方案不仅限于上述eval函数、base64算法,还可使用现有技术中能够实现相同效果的任何方式。

本发明的实施例一为:

一种浏览器脚本的更新方法,包括:

浏览器加载页面时,以Ajax的方式向服务器发送获取脚本的请求;并依据该请求获取脚本;所述请求包括脚本的地址、版本号以及内容的散列;

将上述所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;具体的,调用eval函数对所述脚本进行动态解释;若所述脚本正确执行,则将所述脚本存储至本地存储中;若所述脚本执行异常,则将所述脚本采用base64算法进行编码后存储至本地存储中;

浏览器每次请求获取脚本时,先判断请求的脚本和本地存储中的脚本的差异;若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则向服务器发送获取脚本的请求至的服务器;服务器依据所述请求中的脚本的地址获取与所述内容的散列对应最新版本的脚本;服务器通过delta算法对所述本地存储中的脚本和获取的与所述内容的散列对应的脚本进行处理,生成增量包;服务器将所述增量包发送至浏览器;

浏览器接收到增量包后,通过delta算法将所述增量包与所述本地存储中的脚本的内容合并,生成最新版本的脚本文件,完成浏览器脚本的更新;

若存在与请求的脚本地址相同的本地存储中的脚本、且请求的脚本的版本号小于或等于所述本地存储中的脚本的版本号,则获取所述本地存储中的脚本。

请参照图3,本发明的实施例二为:

一种与上述实施例一的浏览器脚本的更新方法对应的系统,包括:

脚本获取模块1,用于浏览器以Ajax请求的方式获取脚本;

执行模块2,用于将所述脚本按照Ajax请求的顺序以动态解释的方式逐个动态执行;

存储模块3,用于将执行后的脚本的地址、版本号、内容和内容的散列以地址为索引存储至本地存储中;具体的,所述执行模块2用于调用eval函数对所述脚本进行动态解释;所述存储模块3用于若所述脚本正确执行,则将所述脚本存储至本地存储中;若所述脚本执行异常,则将所述脚本采用base64算法进行编码后存储至本地存储中;

增量包获取模块4,用于浏览器请求获取脚本时,若请求的脚本的地址与本地存储中的脚本的地址相同、且请求的脚本的版本号大于所述本地存储中的脚本的版本号,则依据所述请求的脚本的地址、版本号以及内容的散列从服务器中获取所述脚本的增量包;具体的,该增量包获取模块4,包括:第一获取模块41,用于服务器依据所述请求中的脚本的地址获取与所述内容的散列对应的脚本;第一计算模块42,用于服务器通过delta算法对所述本地存储中的脚本和获取的与所述内容的散列对应的脚本进行处理,生成增量包;发送模块43,用于服务器将所述增量包发送至浏览器;

更新模块5,用于将所述增量包与所述本地存储中的脚本的内容合并,完成浏览器脚本的更新;所述更新模块5包括:第二计算模块51,用于浏览器将所述增量包与所述本地存储中的脚本通过delta算法进行合并,生成最新版本的脚本文件;

浏览器请求获取脚本时,若存在与请求的脚本地址相同的本地存储中的脚本、且请求的脚本的版本号小于或等于所述本地存储中的脚本的版本号,则获取所述本地存储中的脚本。

综上所述,本发明提供的浏览器脚本的更新方法及系统,能够采用增量更新的方式更新脚本,无需重新下载整个脚本文件,节省了流量和带宽。

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

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