多页面管理方法和装置与流程

文档序号:16649335发布日期:2019-01-18 19:14阅读:108来源:国知局
多页面管理方法和装置与流程

本发明涉及互联网领域,尤其涉及一种多页面管理方法和装置。



背景技术:

超文本标记语言(Hypertext Markup Language,HTML)是用于描述网页文档的一种标记语言。目前最新的万维网联盟(World Wide Web,W3C)HTML5标准已经正式定稿,但该标准仍处于完善之中。网页实时通信(Web Real-Time Communication,WebRTC)和网络套接字(WebSocket)是HTML5中的两项重要的新技术。WebRTC可以提供客户端到客户端的通信机制,以实现两个客户端之间的音视频及其它数据的通信。该技术改变了以往的HTML技术中只能进行客户端到服务器(Client-Server,CS)模式的通信的状况,使得网络(Web)中进行客户端到客户端的实时通信成为可能。WebSocket技术可以提供一种服务器端与客户端之间双向的、连续的通信机制。WebSocket技术的出现,使得客户端和服务器端双向的、连续的通信成为可能。在实际的客户端到客户端的通信中,一般需要数据通道和信令通道两种信息传输通道,其中数据通道用于传输用户之间相互交流的应用数据,而信令通道则用于帮助客户端之间建立和管理连接。在基于WebRTC构建的音视频通信系统中,通常以WebSocket作为服务器和客户端之间传输信令的通道。

将WebSocket作为WebRTC信令通道存在一些问题。一是用户习惯同时打开多个网页,每个网页都会建立一个客户端与服务器之间的WebSocket,重复连接对服务器和客户端消耗巨大;二是用户习惯通过超链接在各个页面之间跳转,跳转时当前页面的JavaScript Context被销毁,WebSocket断开,到目标页面后重新建立WebSocket,WebSocket的频繁断开或重连操作,使得用户的在线状态频繁改变,消耗资源;三是页面跳转时,在WebSocket的断开或重连的过程中,服务器和客户端之间的通信将丢失。

HTML5标准中的工作线程(Web Worker)规范可以提供了独立于页面的线程,改变以前网络(Web)脚本中单线程的限制,提供了一定的跨页面能力。但是Web Worker只适用于线程和同时打开多个页面时的线程共享,不适用于普通变量或页面跳转时的线程共享,页面跳转时Web Worker依旧会断开或重连。

通常在普通的多线程技术中,也经常涉及多个线程之间通信、同步、共享变量等技术,这些技术都涉及了多个线程之间的交互的技术。但是web领域遇到的跨页面共享变量和普通的多线程技术面临的问题有很大的不同,主要在于普通的多线程技术中,各个函数/线程是嵌套结构的,而web技术中各个函数/线程属于各自的页面,由于各个页面相互独立,跨页面的变量和线程之间并没有嵌套关系,且Web技术中一个很重要的场景是页面跳转,而普通的多线程技术不会涉及到类似的情形。

综上所述,在支持多网页的浏览器中,客户端与服务器之间的信令通道可能出现重复连接,造成系统资源浪费。



技术实现要素:

技术问题

有鉴于此,本发明要解决的技术问题是,如何节约系统资源。

解决方案

根据本发明的一实施例,第一方面,提供了一种多页面管理方法,包括:

客户端根据接收到的页面跳转请求,查找是否有跨页面变量的作用域包括目标页面;

在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用;

在所述目标页面使用所述跨页面变量对应的页面共享内容。

结合第一方面,在第一方面的第一种可能的实现方式中,该多页面管理方法还包括:

所述客户端根据接收到的页面打开请求,查找是否有跨页面变量的作用域包括目标页面。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该多页面管理方法还包括:

所述客户端根据接收到的页面关闭请求,删除需要关闭的页面对所述跨页面变量的引用;

查找所述跨页面变量是否被其他页面引用;

在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

结合第一方面或其任意一种可能的实现方式,在第一方面的第三种可能的实现方式中,查找是否有跨页面变量的作用域包括目标页面,包括:

所述客户端从服务器接收所述目标页面,所述目标页面的程序脚本中包括跨页面变量声明,所述跨页面变量声明包括所述目标页面对应的跨页面变量的名称和作用域,所述服务器为所述目标页面的统一资源定位符URL所指向的设备,所述跨页面变量的名称包括变量名和/或共享名;

根据所述跨页面变量的名称,查找是否有旧页面已经建立与所述跨页面变量的名称相同的跨页面变量,并判断查找到的同名的跨页面变量的作用域是否包括所述目标页面。

结合第一方面或其任意一种可能的实现方式,在第一方面的第四种可能的实现方式中,为所述目标页面添加对所述跨页面变量的引用,包括:

更新引用计数器中的数值,或保存所述跨页面变量与所述目标页面的标识信息之间的引用关系,所述引用计数器中的数值用于表示所述跨页面变量当前被引用的次数;

根据所述目标页面对应的跨页面变量的名称从客户端的内存中读取所述跨页面变量对应的页面共享内容。

结合第一方面或其任意一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述跨页面变量用于表示需要共享的普通的页面信息变量,在所述目标页面使用所述跨页面变量对应的页面共享内容,包括:所述客户端在所述目标页面读取所述页面信息变量对应的页面信息;或者

所述跨页面变量用于表示需要共享的线程变量,在所述目标页面使用所述跨页面变量对应的页面共享线程,包括:所述客户端在所述目标页面运行所述线程变量对应的线程;或者

所述跨页面变量为表示客户端与服务器之间需要建立的信令通道变量,在所述目标页面使用所述跨页面变量对应的页面共享内容,包括:所述客户端在所述目标页面使用所述信令通道变量所对应的信令通道资源,从所述服务器收发数据。

结合第一方面,在第一方面的第六种可能的实现方式中,在为所述目标页面添加对所述跨页面变量的引用之后,包括:

根据页面跳转请求,删除所述旧页面对所述跨页面变量的引用;

查找所述跨页面变量是否被其他页面引用;

在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,在为所述目标页面添加对所述跨页面变量的引用之后,删除所述旧页面对所述跨页面变量的引用之前,包括:

销毁所述旧页面的脚本运行环境;

将所述客户端当前显示的页面切换为所述目标页面;

渲染所述目标页面的脚本运行环境。

结合第一方面的第二、三或七种可能的实现方式,在第一方面的第八种可能的实现方式中,查找所述跨页面变量是否被其他页面引用,包括:

根据所述跨页面变量对应的引用计数器的数值,确定所述跨页面变量是否被其他页面引用;或

根据所述跨页面变量与所述目标页面的标识信息之间的引用关系,确定所述跨页面变量是否被其他页面引用。

第二方面,提供了一种多页面管理装置,包括:

查找模块,用于根据接收到的页面跳转请求,查找是否有跨页面变量的作用域包括目标页面;

引用模块,与所述查找模块相通信,用于在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用;

共享模块,与所述引用模块相通信,用于在所述目标页面使用所述跨页面变量对应的页面共享内容。

结合第二方面,在第二方面的第一种可能的实现方式中,所述查找模块还用于根据接收到的页面打开请求,查找是否有跨页面变量的作用域包括目标页面。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,多页面管理装置还包括:

删除模块,用于根据接收到的页面关闭请求,删除需要关闭的页面对所述跨页面变量的引用;在所述查找模块查找到所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

结合第二方面或其任意一种可能的实现方式,在第二方面的第三种可能的实现方式中,多页面管理装置还包括:

接收模块,用于从服务器接收所述目标页面的跨页面变量声明,所述跨页面变量声明包括所述目标页面对应的跨页面变量的名称和作用域,所述服务器为所述目标页面的统一资源定位符URL所指向的设备,所述跨页面变量的名称包括变量名和/或共享名;

所述查找模块还用于根据所述跨页面变量的名称,查找是否有旧页面已经建立与所述跨页面变量的名称相同的跨页面变量,并判断查找到的同名的跨页面变量的作用域是否包括所述目标页面。

结合第二方面或其任意一种可能的实现方式,在第二方面的第四种可能的实现方式中,多页面管理装置还包括:

读取模块,用于根据所述目标页面的变量名从客户端的内存中读取所述跨页面变量对应的页面共享内容;

所述引用模块还用于更新引用计数器中的数值,或保存所述跨页面变量与所述目标页面的标识信息之间的引用关系,所述引用计数器中的数值用于表示所述跨页面变量当前被引用的次数。

结合第二方面的第二种可能的实现方式,在第二方面的第五种可能的实现方式中,所述删除模块还用于在为所述目标页面添加对所述跨页面变量的引用之后,根据页面跳转请求,删除所述旧页面对所述跨页面变量的引用;在所述查找模块查找到所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容;或

所述删除模块还用于在为所述目标页面添加对所述跨页面变量的引用之后,删除所述旧页面对所述跨页面变量的引用之前,销毁所述旧页面的脚本运行环境;将所述客户端当前显示的页面切换为所述目标页面;渲染所述目标页面的脚本运行环境。

有益效果

本发明实施例,如果有跨页面变量的作用域包括目标页面,可以在目标页面添加对该跨页面变量的引用,在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。

图1为本发明实施例一的多页面管理方法的流程图;

图2为本发明实施例一的多页面管理方法中打开页面的流程图;

图3为本发明实施例一的多页面管理方法中关闭页面的流程图;

图4为本发明实施例二的多页面管理方法的浏览器的线程管理结构图;

图5为本发明实施例二的多页面管理方法中浏览器打开页面的流程图;

图6为本发明实施例二的多页面管理方法中浏览器关闭页面的流程图;

图7为本发明实施例二的多页面管理方法中浏览器页面跳转的流程图;

图8为本发明实施例三的多页面管理装置的结构框图;

图9为本发明实施例四的多页面管理装置的结构框图;

图10为本发明实施例五的多页面管理装置的结构框图。

具体实施方式

以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在另外一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。

实施例1

图1为本发明实施例一的多页面管理方法的流程图。如图1所示,该多页面管理方法主要包括:

步骤110、客户端根据接收到的页面跳转请求,查找是否有跨页面变量的作用域包括目标页面。

具体地,本发明实施例中客户端可以为各种形式的浏览器。如果浏览器当前已经打开了某一页面,用户选择在浏览器中打开目标页面或者点击某一打开目标页面的超链接时,浏览器可以接收到页面跳转请求。该页面跳转请求中可以包括需要跳转到的目标页面的页面信息,例如:目标页面的标识信息或超链接等。其中,超链接可以是HTML页面中包括的统一资源定位器(Uniform Resource Locator,URL)指针,用户点击超链接后,浏览器可以由当前页面向URL所指向的目标页面跳转。

其中,如果客户端存在已经打开的页面,则已经打开的页面所创建的跨页面变量可以保存在设定区域。在客户端接收到页面跳转请求后,可以在设定区域中查找是否有跨页面变量的作用域包括目标页面,具体过程可以包括:

所述客户端从服务器接收所述目标页面,所述目标页面的程序脚本中包括跨页面变量声明,所述跨页面变量声明包括所述目标页面对应的跨页面变量的名称和作用域,所述服务器为所述目标页面的统一资源定位符URL所指向的设备,所述跨页面变量的名称包括变量名和/或共享名;

根据所述跨页面变量的名称,查找是否有旧页面已经建立与所述跨页面变量的名称相同的跨页面变量,并判断查找到的同名的跨页面变量的作用域是否包括所述目标页面。

其中,本发明实施例中的跨页面变量是指需要在多个页面之间实现共享的变量,例如:需要跨页面共享的WebSocket、Variable、Thread等。

步骤120、在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用。

具体地,为所述目标页面添加对所述跨页面变量的引用的具体过程可以包括:更新引用计数器中的数值,或保存所述跨页面变量与所述目标页面的标识信息之间的引用关系,所述引用计数器中的数值用于表示所述跨页面变量当前被引用的次数;根据所述目标页面对应的跨页面变量的名称从客户端的内存中读取所述跨页面变量对应的页面共享内容。

其中,不同的跨页面变量对应的页面共享内容可以不同。例如,对于WebSocket,对应的页面共享内容可以是客户端到服务器之间的WebSocket通道;对于线程(Thread),对应的页面共享内容可以是客户端中运行的共享线程;对于其它普通的Variable,对应的页面共享内容可以是客户端的旧页面中包括的共享信息如:商品数据、用户信息等。

此外,可以记录客户端中的各个页面对于跨页面变量的具体引用情况。例如,可以为每一个跨页面变量建立一个引用计数器,在新建一个跨页面变量的引用计数器时,引用计数器的初始值可以为“1”。每增加一个页面对该跨页面变量的引用,该引用计数器的数值加“1”。每减少一个页面对该跨页面变量的引用,该引用计数器的数值减“1”。在该引用计数器的数值为“0”时,可以表示没有页面引用该跨页面变量。再如,可以保存跨页面变量与页面的标识信息之间的引用关系。每增加一个目标页面对该跨页面变量的引用,可以保存该跨页面变量与该目标页面的标识信息之间的引用关系。每减少一个旧页面对该跨页面变量的引用,可以删除该跨页面变量与该旧页面的标识信息之间的引用关系。在没有记录任何引用关系时,可以表示没有页面引用该跨页面变量。

步骤130、在所述目标页面使用所述跨页面变量对应的页面共享内容。

具体地,目标页面使用跨页面变量对应的页面共享内容的具体方式可以不同。具体可以分为以下场景:

场景一、所述跨页面变量可以用于表示客户端与服务器之间需要建立的信令通道变量,步骤130可以包括:所述客户端在所述目标页面使用所述信令通道变量所对应的信令通道资源,从所述服务器收发数据;例如,对于WebSocket,目标页面可以使用其他页面已经建立的客户端到服务器之间的WebSocket通道,从服务器收发数据。

场景二、所述跨页面变量还可以用于表示需要共享的线程变量,步骤130可以包括:所述客户端在所述目标页面运行所述线程变量对应的线程。例如,对于Thread,目标页面可以在客户端中运行该Thread对应的线程。

场景三、所述跨页面变量可以用于表示需要共享的页面信息变量,步骤130可以包括:所述客户端在所述目标页面读取所述页面信息变量对应的页面信息。例如,对于Variable,目标页面可以从客户端的内存中读取Variable所指向的页面信息。

进一步地,客户端接收到页面跳转请求之后,在关闭旧页面和打开新页面之间的一段时间内,可以先缓存有用的数据,防止数据丢失,具体地,在步骤110之前还可以包括:缓存使用所述跨页面变量对应的页面共享内容所得到的数据。并且,可以从服务器加载所述目标页面的页面资源。在目标页面的页面资源加载完成后再执行步骤110。

例如,如果跨页面变量为websocket,或其他类似的能实时产生需被目标页面处理的数据的线程(Thread),则需把该跨页面变量实时产生的数据进行缓存。并且浏览器可以通过可以通过HTTP请求通道从服务器加载所需的页面资源。

进一步地,由于在旧页面关闭与目标页面打开之间具有一段的时间间隔,为了防止在这段时间间隔中,跨页面变量被销毁,可以再执行步骤120为所述目标页面添加对所述跨页面变量的引用完成之后,再关闭旧页面。具体地,在步骤101或步骤120之后,判断是否关闭旧页面的具体过程可以包括:删除所述旧页面对所述跨页面变量的引用;查找所述跨页面变量是否被其他页面引用;在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。这样,如果新的目标页面引用了已经存在的跨页面变量,则该跨页面变量的引用计数器在整个跳转的过程中都不会为“0”,因此该页面变量不会被销毁。因此,即使对于用户在浏览器中只打开一个窗口并进行页面跳转的场景,跨页面变量依然可以被共享。

其中,查找所述跨页面变量是否被其他页面引用,具体可以采用以下任意一种方式:

方式一、根据所述跨页面变量对应的引用计数器的数值,确定所述跨页面变量是否被其他页面引用;例如,该跨页面变量的引用计数器的数值为“0”,可以表明跨页面变量未被其他页面引用,为大于或等于“1”的数值,可以表明跨页面变量被其他页面引用。

方式二、根据所述跨页面变量与所述目标页面的标识信息之间的引用关系,确定所述跨页面变量是否被其他页面引用。

进一步地,在步骤101或步骤120之后,删除所述旧页面对所述跨页面变量的引用之前,还可以包括:加载新的目标页面;添加目标页面对所述跨页面变量的引用;销毁所述旧页面的脚本运行环境;将浏览器当前显示的页面切换为所述目标页面;渲染所述目标页面的脚本运行环境。

在一种可能的实现方式中,客户端处于需要打开页面的情况,这种情况下,该多页面管理方法还可以包括打开页面的流程,如图2所示,具体可以包括:

步骤210、客户端根据接收到的页面打开请求,查找是否有跨页面变量的作用域包括目标页面;

具体地,在用户需要在客户端如某一浏览器中打开一个页面时,浏览器可以接收到页面打开请求。页面打开请求中可以包括需要打开的目标页面的页面信息,例如:目标页面的标识信息或超链接等。其中,查找是否有跨页面变量的作用域包括目标页面的具体过程可以参见上述步骤110的相关描述。

步骤220、在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用;具体过程可以参见上述步骤120的相关描述。

步骤230、在所述目标页面使用所述跨页面变量对应的页面共享内容。其中,具体过程可以参见上述步骤130的相关描述。

在一种可能的实现方式中,客户端处于需要关闭页面的情况,这种情况下,该多页面管理方法还可以包括关闭页面的流程,如图3所示,具体可以包括:

步骤310、客户端根据接收到的页面关闭请求,删除需要关闭的页面对所述跨页面变量的引用。

步骤320、查找所述跨页面变量是否被其他页面引用。具体可以参见上述方式一和方式二的相关描述。

步骤330、在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

本实施例的多页面管理方法,如果有跨页面变量的作用域包括目标页面,可以在目标页面添加对该跨页面变量的引用,在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

实施例2

图4为本发明实施例二的多页面管理方法的浏览器的线程管理结构图。以跨页面变量为WebSocket、客户端为浏览器为例,在保证安全性的前提下,可以扩大WebSocket的作用域范围,使得WebSocket连接在相同站点间的页面跳转时无需断开和重连。具体可以修改JavaScript中WebSocket接口,以及浏览器中对WebSocket的实现。如图4所示,浏览器的线程管理结构可以包括:当前打开页面区域41、跨页面变量管理区域43、目标页面跳转管理区域45。

其中,当前打开页面区域41可以包含两个部分,一是JavaScriptContext即页面内变量的执行环境,这部分可以采用传统的JavaScript变量声明和管理技术实现;二是跨页面WebSocket的构造函数声明(简称跨页面变量声明),在包含多页面的网站的网页中,在声明WebSocket时,允许指定哪些跳转目标页面可以共用主页面中的WebSocket。

在从浏览器的主页面向目标页面跳转时,如果目标页面在主页面中的某个WebSocket的允许共享的目标页面列表中,跨页面变量管理区域43可以保持主页面的WebSocket通道直到目标页面的JavaScript Context完成,并建立对该WebSocket的引用。其中,引用关系可用引用计数器实现。

目标页面跳转管理区域45可以记录主页面和目标页面的跳转关系,在后续目标页面反向跳转到主页面时,同样保持对WebSocket的共享。并且,目标页面跳转管理区域45还可以执行Ajax、Javascript。

其中,对于Javascript部分,可以在页面代码中,修改WebSocket的构造函数声明(即跨页面变量声明),增加一个共享的变量名和一个作用域如目标页面列表(TargetList),例如:

var websocket=new WebSocket(′ws://www.example.com′,[],name,[′/page2′])。其中,“websocket”为变量名,“name”为变量的共享名,[′/page2′]为目标页面列表。其中,“websocket”为该变量在本页面内的名字,“name”为其他页面引用该变量时使用的名字。

再如,目标页面列表也可以声明为相同网站的所有页面:

var websocket=new WebSocket(′ws://www.example.com′,[],name,[*]);

又如,也可以不新增共享名,而是采用变量名“websocket”作为共享变量名,也即本页面内和其他页面,在引用该变量时使用的名字均为“websocket”,只增加该变量的作用域。

浏览器在收到页面打开请求或页面跳转请求后,在加载目标页面并对目标页面进行解析的过程中,可以检查页面中的跨变量声明中的TargetList是否合法并进行相应处理:(1)如果TargetList中的目标页面不符合“同源策略”,可以报错并忽略该URL;(2)如果TargetList中的目标页面不为空,可以保存该列表。

此外,现有浏览器对应变量的管理机制是:每个变量的有效范围被限制在一定的JavaScript Context中,最高级别的脚本运行环境是一个网页页面(或对应的HTML文档,或对应的解析后的DOM)。浏览器离开一个页面时,对应的脚本运行环境和其中的变量将被销毁。而本发明实施例可以修改浏览器对变量的管理机制。参见图4,在浏览器中,除了在页面对应的JavaScript Context外,还创建跨页面变量管理区域43。通过跨页面变量管理区域43可以控制页面的打开、关闭和跳转流程中的跨页面变量管理。

图5为本发明实施例二的多页面管理方法中浏览器打开页面的流程图,如图5所示,打开页面的流程具体可以包括:

步骤510、浏览器接收页面打开请求。

步骤520、浏览器从服务器收到跨页面的WebSocket构造函数声明(即跨页面变量声明)。

步骤530、浏览器的跨页面变量管理区域,查看该跨页面变量(WebSocket)是否已被其他页面创建。如果是则执行步骤540;否则执行步骤550。

步骤540、跨页面变量管理区域添加对WebSocket的引用。

其中,每个跨页面的WebSocket,可以对应有一个“引用计数器”,当一个页面在浏览器中打开、并且该页面引用了一个WebSocket时,可以将该WebSocket的引用计数器加“1”。也可以将该页面的标识与WebSocket的引用关系存进跨页面变量管理区域。

步骤550、在跨页面变量管理区域,创建该浏览器与服务器之间的信令通道(WebSocket通道);

步骤560、在打开的目标页面使用该WebSocket通道。

图6为本发明实施例二的多页面管理方法中浏览器关闭页面的流程图,如图6所示,关闭页面的流程具体可以包括:

步骤610、浏览器接收页面关闭请求。

步骤620、销毁该页面对应的脚本运行环境(JavaScript Context)。

步骤630、删除该页面对WebSocket的引用。

具体可以在跨页面变量管理区域,将该页面对应的WebSocket的引用计数器减“1”,也可以删除跨页面变量管理区域保存的将该页面的标识与WebSocket的引用关系。

步骤640、检查该页面对应的WebSocket是否被其他页面引用,如果未被其他页面引用,则执行步骤650。其中,可以根据该WebSocket的引用计数器的数值,或者根据保存的该WebSocket与页面标识的引用关系,判断是否被其他页面引用。

步骤650、销毁该WebSocket对应的WebSocket通道。如果该页面对应的WebSocket被其他页面引用,则不用销毁该WebSocket通道,可以等待其他页面继续使用。

其中,创建和删除对跨页面的WebSocket的引用的时机,可由代码明确指示,而不限制在打开页面和关闭页面时进行。

例如,把跨页面共享变量的声明放在根据条件判断进行编译和执行的程序块中,如:

If(条件==true)

{

var websocket=new WebSocket(′ws://www.example.com′,[],name,[*]);//在符合条件时生成跨页面共享变量

}

上述程序块中的跨页面变量的引用和生成,需在程序执行过程中,根据前面程序执行的结果动态判断。对于这种情况,创建和删除对跨页面的WebSocket的引用的时机有两种方法:

(1)在页面跳转时确定引用关系。在目标页面加载时,检查跨页面变量区域中的所有跨页面变量,如果某一跨页面共享变量的作用域包含目标页面,再创建目标页面对该跨页面共享变量的引用。这种方法只是按跨页面共享页面变量的作用域和目标页面完成,与目标页面中的代码脚本及其执行结果无关;

(2)在解析和执行目标页面的代码时,遇到跨页面共享变量的声明时再创建目标页面对该跨页面共享变量的引用。这种方法和按跨页面共享页面变量的作用域、目标页面、目标页面中的代码脚本及其执行结果三者相关。

图7为本发明实施例二的多页面管理方法中浏览器页面跳转的流程图,在页面跳转时,旧页面的关闭和目标页面的打开之间有一段时间间隔。为了避免在这段时间间隔中跨页面的WebSocket被销毁,浏览器可以在接收到页面跳转请求,执行旧页面关闭之前,判断目标页面的URL是否属于某个已有WebSocket的作用域,如果是,则添加目标页面对该WebSocket的引用(即在旧页面关闭之前添加目标页面对该WebSocket的引用)。如图7所示,页面跳转的流程具体可以包括:

步骤710、浏览器已经打开当前页面,可以参见图5中的流程,根据收到的跨页面的WebSocket的构造函数声明,到全局变量管理区域创建该WebSocket,或增加对该WebSocket的引用。

步骤720、浏览器收到页面跳转请求,执行步骤730和步骤740,本发明实施例中不限制步骤730和步骤740的时序关系,可以同时执行,也可以分先后。

具体地,在用户选择页面跳转或点击页面跳转的超链接时,浏览器开始处理页面跳转请求。

步骤730、缓存服务器通过WebSocket通道发送过来的消息,以避免消息丢失。

步骤740、浏览器按通用流程加载目标页面的页面资源。

在完成加载页面资源后,可以执行步骤750。

步骤750、检查是否有跨页面变量(WebSocket)的作用域包括目标页面,以及目标页面是否引用该WebSocket,如果是,则执行步骤760,否则可以参见步骤550,在跨页面变量管理区域,创建该浏览器与服务器之间的信令通道(WebSocket通道)。

步骤760、添加对该WebSocket的引用,然后,可以参见步骤560,在打开的目标页面使用该WebSocket通道。

在完成目标页面对该WebSocket的引用后,可以执行步骤770。

步骤770、销毁旧页面的JavaScript Context。

步骤780、删除旧页面对该WebSocket的引用。

步骤790、将浏览器当前显示的页面由旧页面切换为目标页面。

步骤791、渲染目标页面的JavaScript Context。

本实施例中,以WebSocket作为跨页面变量共享的示例介绍了多页面管理方法,但本领域技术人员能够理解,本发明应不限于此,如:不仅适用为跨页面的WebSocket作为WebRTC信令通道的情况,而且适用于其它的web领域中的web脚本语言(如JavaScript)提供通用的跨页面变量的共享。

当以其他JavaScript变量作为跨页面变量时,具体实现方法可以通过修改JavaScript变量的构造函数声明(即跨页面变量声明)实施,具体可以修改为:

var variable1=new Variable(name1,[′/page2′]);

其中,variable1为该跨页面变量的变量名,name1为该跨页面变量的共享名,[′/page2′]为目标页面列表。

通过该Variable可以在多个页面之间共享和传递信息。例如,用户在一个电子商务的网页页面把一件物品放置到“购物车”中,然后跳转到同个电子商务网站的其他页面继续选购商品,通过跨页面变量可以把用户的“购物车”里有哪些商品记录下来,在目标页面中可以显示。

此外,在多线程的网络操作系统(webos)中,需要一个线程保持用户的登录信息、用户的权限信息,用户在多个web程序之间切换时都需要该信息,当在多个页面之间共享跨页面的线程时,可以方便用户随时调用用户信息。当以其他JavaScript线程变量作为跨页面变量时,具体实现方法可以通过修改JavaScript线程变量的构造函数声明,具体可以修改为:

var variable1=new Thread(name2,[′/page2′]);

其中,variable1为跨页面变量的变量名,name2为跨页面变量的共享名,[′/page2′]为目标页面列表。

本实施例的多页面管理方法,如果有跨页面变量的作用域包括目标页面,可以在目标页面添加对该跨页面变量的引用,在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

例如,通过共享WebSocket,可以减少客户端与服务器的系统之间的WebSocket通道的重复连接,在页面跳转过程中可以防止出现WebSocket通道频繁的断开与重连,实现多个页面共享WebSocket通道,节约系统资源。通过共享Variable,可以在客户端的不同页面之间实现页面信息的传递和共享,节约系统资源。通过共享线程(Thread),可以节省系统资源。

实施例3

图8为本发明实施例三的多页面管理装置的结构框图,如图8所示,该多页面管理装置可以包括:

查找模块81,用于根据接收到的页面跳转请求,查找是否有跨页面变量的作用域包括目标页面;

引用模块83,与所述查找模块81相通信,用于在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用;

共享模块85,与所述引用模块83相通信,用于在所述目标页面使用所述跨页面变量对应的页面共享内容。

具体地,本发明实施例中多页面管理装置可以通过各种形式的浏览器实现。如果浏览器当前已经打开了某一页面,用户选择在浏览器中打开目标页面或者点击某一打开目标页面的超链接时,浏览器可以接收到页面跳转请求。该页面跳转请求中可以包括需要跳转到的目标页面的页面信息,例如:目标页面的标识信息或超链接等。其中,超链接可以是HTML页面中包括的URL指针,用户点击超链接后,浏览器可以由当前页面向URL所指向的目标页面跳转。其中,本发明实施例中的跨页面变量是指需要在多个页面之间实现共享的变量,例如:需要跨页面共享的WebSocket、Variable、Thread等。多页面管理装置的各个模块页面跳转的流程可以参见上述多页面管理方法中的客户端、浏览器页面跳转的流程的相关描述。

在一种可能的实现方式中,在需要打开页面的情况,所述查找模块81还可以用于根据接收到的页面打开请求,查找是否有跨页面变量的作用域包括目标页面。其中,多页面管理装置的各个模块打开页面的流程可以参见上述多页面管理方法中的客户端、浏览器打开页面的流程的相关描述。

本发明多页面管理装置,如果查找模块查找到有跨页面变量的作用域包括目标页面,引用模块可以在目标页面添加对该跨页面变量的引用,共享模块可以在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

实施例4

图9为本发明实施例四的多页面管理装置的结构框图,如图9所示,该多页面管理装置还可以包括:

删除模块91,用于根据接收到的页面关闭请求,删除需要关闭的页面对所述跨页面变量的引用;在所述查找模块81查找到所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。在需要关闭页面的情况,多页面管理装置的各个模块关闭页面的流程可以参见上述多页面管理方法中的客户端、浏览器关闭页面的流程的相关描述。

在一种可能的实现方式中,该多页面管理装置还可以包括:

接收模块93,用于从服务器接收所述目标页面的跨页面变量声明,所述跨页面变量声明包括所述目标页面对应的跨页面变量的名称和作用域,所述服务器为所述目标页面的统一资源定位符URL所指向的设备,所述跨页面变量的名称包括变量名和/或共享名;

所述查找模块81还用于根据所述跨页面变量的名称,查找是否有旧页面已经建立与所述跨页面变量的名称相同的跨页面变量,并判断查找到的同名的跨页面变量的作用域是否包括所述目标页面。

在一种可能的实现方式中,该多页面管理装置还可以包括:

读取模块95,用于根据所述目标页面的变量名从内存中读取所述跨页面变量对应的页面共享内容;

所述引用模块83还用于更新引用计数器中的数值,或保存所述跨页面变量与所述目标页面的标识信息之间的引用关系,所述引用计数器中的数值用于表示所述跨页面变量当前被引用的次数。

在一种可能的实现方式中,所述跨页面变量用于表示需要共享的普通的页面信息变量,所述共享模块85具体用于在所述目标页面读取所述页面信息变量对应的页面信息;或者

所述跨页面变量用于表示需要共享的线程变量,所述共享模块85具体用于在所述目标页面运行所述线程变量对应的线程;或者

所述跨页面变量为表示与服务器之间需要建立的信令通道变量,所述共享模块85具体用于在所述目标页面使用所述信令通道变量所对应的信令通道资源,从所述服务器收发数据。

在一种可能的实现方式中,该多页面管理装置还可以包括:

缓存加载模块97,用于在查找是否有跨页面变量的作用域包括目标页面之前,若所述跨页面变量为能产生或接收数据的线程,缓存所述跨页面变量产生或接收到的数据,直到加载完毕所述目标页面。

在一种可能的实现方式中,所述删除模块91还可以用于在为所述目标页面添加对所述跨页面变量的引用之后,根据页面跳转请求,删除所述旧页面对所述跨页面变量的引用;在所述查找模块81查找到所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容;或

所述删除模块91还用于在为所述目标页面添加对所述跨页面变量的引用之后,删除所述旧页面对所述跨页面变量的引用之前,销毁所述旧页面的脚本运行环境;将当前显示的页面切换为所述目标页面;渲染所述目标页面的脚本运行环境。

本发明多页面管理装置,如果查找模块查找到有跨页面变量的作用域包括目标页面,引用模块可以在目标页面添加对该跨页面变量的引用,共享模块可以在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

实施例5

图10为本发明实施例五的多页面管理装置的结构框图。所述多页面管理装置1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。

所述多页面管理装置1100包括处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。

通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。

处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。

在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:

根据接收到的页面跳转请求,查找是否有跨页面变量的作用域包括目标页面;

在查找到有跨页面变量的作用域包括目标页面的情况下,为所述目标页面添加对所述跨页面变量的引用;

在所述目标页面使用所述跨页面变量对应的页面共享内容。

在一种可能的实施方式中,上述程序还可用于根据接收到的页面打开请求,查找是否有跨页面变量的作用域包括目标页面。

在一种可能的实施方式中,上述程序还可用于根据接收到的页面关闭请求,删除需要关闭的页面对所述跨页面变量的引用;

查找所述跨页面变量是否被其他页面引用;

在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

在一种可能的实施方式中,查找是否有跨页面变量的作用域包括目标页面,包括:

从服务器接收所述目标页面,所述目标页面的程序脚本中包括跨页面变量声明,所述跨页面变量声明包括所述目标页面对应的跨页面变量的名称和作用域,所述服务器为所述目标页面的统一资源定位符URL所指向的设备,所述跨页面变量的名称包括变量名和/或共享名;

根据所述跨页面变量的名称,查找是否有旧页面已经建立与所述跨页面变量的名称相同的跨页面变量,并判断查找到的同名的跨页面变量的作用域是否包括所述目标页面。

在一种可能的实施方式中,为所述目标页面添加对所述跨页面变量的引用,包括:

更新引用计数器中的数值,或保存所述跨页面变量与所述目标页面的标识信息之间的引用关系,所述引用计数器中的数值用于表示所述跨页面变量当前被引用的次数;

根据所述目标页面对应的跨页面变量的名称从内存中读取所述跨页面变量对应的页面共享内容。

在一种可能的实施方式中,所述跨页面变量用于表示需要共享的普通的页面信息变量,在所述目标页面使用所述跨页面变量对应的页面共享内容,包括:在所述目标页面读取所述页面信息变量对应的页面信息;或者

所述跨页面变量用于表示需要共享的线程变量,在所述目标页面使用所述跨页面变量对应的页面共享线程,包括:在所述目标页面运行所述线程变量对应的线程;或者

所述跨页面变量为表示与服务器之间需要建立的信令通道变量,在所述目标页面使用所述跨页面变量对应的页面共享内容,包括:在所述目标页面使用所述信令通道变量所对应的信令通道资源,从所述服务器收发数据。

在一种可能的实施方式中,在为所述目标页面添加对所述跨页面变量的引用之后,包括:

根据页面跳转请求,删除所述旧页面对所述跨页面变量的引用;

查找所述跨页面变量是否被其他页面引用;

在所述跨页面变量未被其他页面引用的情况下,销毁所述跨页面变量对应的页面共享内容。

在一种可能的实施方式中,在为所述目标页面添加对所述跨页面变量的引用之后,删除所述旧页面对所述跨页面变量的引用之前,包括:

销毁所述旧页面的脚本运行环境;

将当前显示的页面切换为所述目标页面;

渲染所述目标页面的脚本运行环境。

在一种可能的实施方式中,查找所述跨页面变量是否被其他页面引用,包括:

根据所述跨页面变量对应的引用计数器的数值,确定所述跨页面变量是否被其他页面引用;或

根据所述跨页面变量与所述目标页面的标识信息之间的引用关系,确定所述跨页面变量是否被其他页面引用。

本发明实施例,如果有跨页面变量的作用域包括目标页面,可以在目标页面添加对该跨页面变量的引用,在目标页面使用跨页面变量对应的页面共享内容,可以通过变量实现资源共享,减少系统资源浪费。

本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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