一种多窗口数据同步方法和装置与流程

文档序号:14249146阅读:306来源:国知局
一种多窗口数据同步方法和装置与流程

本发明涉及计算机互联网技术,尤指一种多窗口数据同步方法和装置。



背景技术:

用户使用浏览器访问一个网站时,经常出现同时打开多个窗口的情况,如果用户在窗口a中进行了某些操作,产生了操作结果,而在窗口b中却没有自动刷新同步该操作结果,而仍显示旧的数据,可能会导致一些问题。例如一个购物网站,用户打开了两个购物窗口,在窗口a中添加一个商品,又在窗口b中添加另一个商品,却发现在窗口b的购物车中没有刚才在窗口a中添加的商品。对于这种类似的对数据较敏感的网站,必须着手解决多窗口数据同步的问题。

常见的实现数据同步的手段有两种:一种是在浏览器中创建定时器频繁访问服务器数据,为了达到实时的效果,访问频率需要足够高,访问间隔必须控制在一秒以内才能达到预想的效果,但是当服务器数据没有变更时,请求就是没有意义的,因此会对服务器造成巨大的无意义开销;另外一种方式就是和服务器建立长连接,即使用websocket,采用这种方式需要服务器端额外承担大量的websocket连接,无疑也会提高服务器的运营成本,并不是最优方案。

综上,现有的多窗口间数据同步方法存在服务器压力过大、运营成本较高的问题。



技术实现要素:

为了解决上述技术问题,本发明提供了一种多窗口数据同步方法和装置,在本地维护窗口内容数据,基于本地维护的窗口内容数据进行多窗口间同窗的更新同步,解决了现有的多窗口间数据同步方法导致的服务器压力过大、运营成本较高的问题,实现了高效快速可靠的多窗口间数据同步,大大提升了用户体验。

为了达到本发明目的,本发明提供了一种多窗口数据同步方法,包括:

在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口;

向匹配得到的至少一个窗口进行所述窗口内容数据的同步。

优选的,在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口的步骤之前还包括:

根据所述主窗口接收到的操作指令,获取操作数据;

向服务器更新所述操作数据;

在向所述服务器更新所述操作数据成功时,向本地维护的窗口内容数据中添加所述操作数据。

优选的,向服务器更新所述操作数据的步骤之后,还包括:

在向所述服务器更新所述操作数据失败时,放弃所述操作数据。

优选的,该方法还包括:

为数据主题生成相应的窗口内容数据;

为所述数据主题分配键值,在所述键值与所述窗口内容数据之间建立关联关系。

优选的,在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口的步骤包括:

在窗口内容数据发生变化时,获取所述窗口内容数据关联的键值;

根据所述键值,确定所述窗口内容数据涉及的数据主题;

筛选当前包含所述数据主题且非主窗口的窗口作为与所述窗口内容数据相匹配的窗口。

优选的,向匹配得到的至少一个窗口进行所述窗口内容数据的同步的步骤具体为:

触发匹配得到的所述至少一个窗口的显示内容更新,使所述窗口呈现所述窗口内容数据的变化内容。

本发明还提供了一种多窗口数据同步装置,包括:

目标窗口匹配模块,用于在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口;

本地数据同步模块,用于向匹配得到的至少一个窗口进行所述窗口内容数据的同步。

优选的,该装置还包括:

操作数据获取模块,用于根据所述主窗口接收到的操作指令,获取操作数据;

远端数据更新模块,用于向服务器更新所述操作数据;

本地数据更新模块,用于在向所述服务器更新所述操作数据成功时,向本地维护的窗口内容数据中添加所述操作数据。

优选的,该装置还包括:

本地数据生成模块,用于为数据主题生成相应的窗口内容数据;

关联关系维护模块,用于为所述数据主题分配键值,在所述键值与所述窗口内容数据之间建立关联关系。

优选的,所述目标窗口匹配模块包括:

键值确认单元,用于在窗口内容数据发生变化时,获取所述窗口内容数据关联的键值;

主题确认单元,用于根据所述键值,确定所述窗口内容数据涉及的数据主题;

匹配结果生成单元,用于筛选当前包含所述数据主题且非主窗口的窗口作为与所述窗口内容数据相匹配的窗口。

本发明提供了一种多窗口数据同步方法和装置,在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口,向匹配得到的至少一个窗口进行所述窗口内容数据的同步。基于本地维护的窗口内容数据,进行多窗口之间的数据同步,解决了多个窗口通过服务器进行数据同步造成的服务器压力过大、运营成本较高的问题。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明的实施例一提供的一种多窗口数据同步方法的流程示意图;

图2为图1中步骤107的具体流程示意图;

图3为本发明的实施例二提供的一种多窗口数据同步装置的结构示意图;

图4为图3中目标窗口匹配模块301的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

常见的在多窗口间实现数据同步的手段有两种:一种是在浏览器中创建定时器频繁访问服务器数据,为了达到实时的效果,访问频率需要足够高,访问间隔必须控制在一秒以内才能达到预想的效果,但是当服务器数据没有变更时,请求就是没有意义的,因此会对服务器造成巨大的无意义开销;另外一种方式就是和服务器建立长连接,即使用websocket,采用这种方式需要服务器端额外承担大量的websocket连接,无疑也会提高服务器的运营成本,并不是最优方案。

为了解决上述问题,本发明的实施例提供了一种多窗口间数据同步方法和装置,在本地维护窗口内容数据,基于本地维护的窗口内容数据进行多窗口间同窗的更新同步,解决了现有的多窗口间数据同步方法导致的服务器压力过大、运营成本较高的问题。

首先结合附图,对本发明的实施例一进行说明。

本发明实施例提供了一种多窗口数据同步方法,使用该方法完成访问同一网站时打开的多窗口间数据同步的流程如图1所示,包括:

步骤101、为数据主题生成相应的窗口内容数据;

本发明实施例中,采用localstorage实现窗口内容数据。

根据实际应用情况,也可以采用cookie或sessionstorage实现。

步骤102、为所述数据主题分配键值,在所述键值与所述窗口内容数据之间建立关联关系;

本步骤中,各个窗口均涉及一个或多个数据主题,可为数据主题分配键值,通过键值在窗口与窗口内容数据之间建立关联。

对窗口所关心的数据主题可通过主题列表的方式来进行管理,保存在隐藏的文本框中。数据主题可以通过对键值(key)的命名约定来实现,确保程序能够根据key的名称直接就能判定下一步应该进行怎样的处理。

步骤103、根据所述主窗口接收到的操作指令,获取操作数据;

本发明实施例中,主窗口即为当前激活接受用户操作的窗口。在接收到用户操作时,即生成与该操作相关联的操作数据。

具体的,主窗口为与服务器通信的窗口,除了主窗口外,其他窗口不与服务器通信,而是与localstorage进行数据交互。为了简化数据流转,主窗口可以确定为用户当前操作的窗口。

步骤104、向服务器更新所述操作数据;

本步骤中,向服务器更新所述操作数据,以服务器保护的窗口内容数据作为最标准的窗口内容数据版本,以保证本地维护的窗口内容数据与服务器侧一致。

在更新成功时,进入步骤106;在更新失败时,进入步骤105。

步骤105、在向所述服务器更新所述操作数据失败时,放弃所述操作数据。

步骤106、在向所述服务器更新所述操作数据成功时,向本地维护的窗口内容数据中添加所述操作数据;

本步骤中,由于向服务器更新所述操作数据成功,表明服务器一侧存储的窗口内容数据已发生了变化,因此可将该操作数据添加至本地维护的窗口内容数据之中,保持与服务器侧数据的一致性。

用户在主窗口中所进行的操作,首先需要与服务器交互,将操作数据保存到数据库,成功后服务器把成功的消息反馈给本地客户端,本地客户端再将数据保存至localstorage。如果服务器处理失败,那么要及时提示错误消息,且不向localstorage中保存该操作数据。优选的,与服务器的数据交互采用ajax方式。

在服务器反更新所述操作数据成功消息后,进入步骤107。

步骤107、在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口;

本步骤具体如图2所示,包括:

步骤201、在窗口内容数据发生变化时,获取所述窗口内容数据关联的键值;

步骤202、根据所述键值,确定所述窗口内容数据涉及的数据主题;

步骤203、筛选当前包含所述数据主题且非主窗口的窗口作为与所述窗口内容数据相匹配的窗口。

步骤108、向匹配得到的至少一个窗口进行所述窗口内容数据的同步;

本步骤中,触发匹配得到的所述至少一个窗口的显示内容更新,使所述窗口呈现所述窗口内容数据的变化内容。

具体的,非主窗口的其他窗口为storage事件绑定相应的处理函数,localstorage数据发生变化时,首先根据key值和本窗口所关心(涉及)的数据主题作比对,判断这些数据是否是本窗口所关心的。如果是,即触发执行相应的数据处理动作,把相关数据的变化及时展现在界面上;如果不关心则直接忽略。由此,完成多窗口间的数据同步。

下面结合附图,对本发明的实施例二进行说明。

本发明实施例提供了一种多窗口数据同步装置,该装置的结构如图3所示,包括:

目标窗口匹配模块301,用于在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口;

本地数据同步模块302,用于向匹配得到的至少一个窗口进行所述窗口内容数据的同步。

优选的,该装置还包括:

操作数据获取模块303,用于根据所述主窗口接收到的操作指令,获取操作数据;

远端数据更新模块304,用于向服务器更新所述操作数据;

本地数据更新模块305,用于在向所述服务器更新所述操作数据成功时,向本地维护的窗口内容数据中添加所述操作数据。

优选的,该装置还包括:

本地数据生成模块306,用于为数据主题生成相应的窗口内容数据;

关联关系维护模块307,用于为所述数据主题分配键值,在所述键值与所述窗口内容数据之间建立关联关系。

优选的,所述目标窗口匹配模块301的结构如图4所示,包括:

键值确认单元401,用于在窗口内容数据发生变化时,获取所述窗口内容数据关联的键值;

主题确认单元402,用于根据所述键值,确定所述窗口内容数据涉及的数据主题;

匹配结果生成单元403,用于筛选当前包含所述数据主题且非主窗口的窗口作为与所述窗口内容数据相匹配的窗口。

本发明的实施例提供了一种多窗口数据同步方法和装置,在本地维护的窗口内容数据发生变化时,匹配所述窗口内容数据对应的除当前的主窗口外的至少一个窗口,向匹配得到的至少一个窗口进行所述窗口内容数据的同步。基于本地维护的窗口内容数据,进行多窗口之间的数据同步,解决了多个窗口通过服务器进行数据同步造成的服务器压力过大、运营成本较高的问题。

当用户打开多个窗口时,每次只有一个窗口与服务器交互,其他窗口都以本地的localstorage作为数据来源。由于同一时刻只有一个窗口与服务器交互,减轻了服务器的压力,降低了服务器的维护成本,同时也规避了由于网络缓慢导致的数据更新不及时的问题。

以key值结合本窗口所关心的主题列表作为数据过滤依据,且以key值作为下一步处理的依据,实现了对多窗口涉及数据内容的管理,进一步提高了同步效率及准确性。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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