浏览器页面加载方法及装置的制作方法

文档序号:6428640阅读:295来源:国知局
专利名称:浏览器页面加载方法及装置的制作方法
技术领域
本发明涉及互联网技术领域,特别涉及一种浏览器页面加载方法及装置。
背景技术
浏览器是指可以显示网页服务器或者文件系统的HTML (Hyper Text Mark-upLanguage,超文本标记语言或超文本链接标示语言)文件内容,并让用户与这些文件交互的一种软件工具。浏览器是访问互联网最常用的工具。随着互联网技术的飞速发展,浏览器在日常生活、工作和学习中的应用已经越来越频繁。一般浏览器进行页面加载的过程是当接收到用户提交的URL (Uniform /Universal Resource Locator,统一资源定位符,也被称为网页地址)请求时(例如,用户在浏览器的地址栏输入网址),向相应服务器请求网页数据,并将请求到的页面数据下载到浏 览器客户端,然后调用页面渲染单元对该页面数据进行渲染,通过浏览器窗口展示经渲染处理后的页面。在现有技术中,对于每个用于显示页面的浏览器窗口,都要对应的分配一个页面渲染单元进行页面渲染。例如,在iPhone平台(由苹果公司提供的在iPhone上开发应用程序的解决方案)下,使用UIWebView (—种功能单元,用于进行网页渲染)进行页面渲染。在使用UIWebView进行网页渲染时,每一个用于显示页面的浏览器窗口都要使用一个UIffebView对本窗口中的页面数据进行渲染。然而,发明人发现现有技术至少存在如下问题页面渲染单元对页面进行渲染的时候需要占用一定的内存,当浏览器打开的窗口越多,则调用的页面渲染单元也越多,相应地,浏览器占用的内存也就越多,这导致浏览器打开多个窗口时,运行相当缓慢。

发明内容
本发明的目的在于提供一种浏览器页面加载方法及其装置,以减少打开过多浏览器窗口时对内存的占用,为此,本发明实施例米用如下技术方案
本发明实施例提供一种浏览器页面加载方法,其中,在浏览器客户端建立有页面渲染单元池,所述页面渲染单元池中包含有预设数量的页面渲染单元,该方法包括
获取待加载页面的数据;
当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据;
当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。本发明实施例还提供一种浏览器页面加载装置,包括
页面渲染单元池,其中包含有预设数量的页面渲染单元;
获取模块,用于获取待加载页面的数据;加载模块,用于当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据;以及,当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。本发明的上述实施例,采用页面渲染单元池,控制页面渲染单元池中页面渲染单元数量,当需要在新窗口中加载页面数据且页面渲染单元池没有空闲的页面渲染单元时,则释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据,从而通过控制页面渲染单元使用数量,可节约浏览器内存占用量,使得浏览器保持运行流畅。



图I为本发明第一实施例提供的浏览器页面加载流程示意 图2为本发明第二实施例提供的浏览器页面加载流程示意 图3为本发明第三实施例提供的浏览器页面加载流程示意 图4为本发明第四实施例提供的浏览器页面加载装置的结构示意图。
具体实施例方式下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例中,在浏览器客户端中设置页面渲染单元池,在该页面渲染单元池中建立多个页面渲染单元,可以根据内存的使用情况设置页面渲染单元池中页面渲染单元的数量,数量设置的越高,对内存的占用将越多,相反数量设置的越低,对内存的占用就越少。当浏览器客户端需要打开新的浏览器窗口显示页面时,浏览器客户端从该页面渲染单元池中调用当前空闲的页面渲染单元进行页面渲染处理;如果该页面渲染单元池中当前没有空闲的页面渲染单元,则释放已占用的页面渲染单元中的数据以进行页面渲染处理,从而保证浏览器客户端仅使用页面渲染单元池中的固定数量的页面渲染单元进行页面渲染处理,以限制浏览器中窗口的数量,一定程度上避免了因用户请求打开过多数量的浏览器窗口,导致内存资源消耗过大,影响浏览器客户端正常使用的问题。如图I所示,本发明第一实施例提供的浏览器页面加载流程可包括以下步骤101、102、103、以及步骤104。步骤101,浏览器客户端获取待加载的页面数据。具体的,当用户通过在地址栏输入URL地址,或者点击网页中的链接时,浏览器客户端(如手机等)会向相应的服务器发起网页数据的获取请求(如HTTP (HypertextTransfer Protocol,超文本传输协议)请求),进而接收该服务器所传送的对应该URL地址的页面数据,以进一步加载并显示该页面。步骤102,当待加载页面需要在新窗口中加载时,浏览器客户端判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在,则执行步骤103 ;否则执行步骤104。在本步骤中,所述页面渲染单元池中包含有预设数量的页面渲染单元。步骤103,浏览器客户端调用空闲的页面渲染单元加载该待加载的页面数据。具体的,页面渲染单元加载页面数据的过程是首先,页面渲染单元对页面数据进行解析;然后,页面渲染单元根据数据解析的结果对页面数据进行排版;最后,页面渲染单元对页面进行绘制。步骤104,浏览器客户端释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载该待加载的页面数据。具体的,浏览器客户端在选择需要释放数据的页面渲染单元时,可采用随机选择的方式,也可以根据每个已占用的页面渲染单元最近一次加载页面数据的时间先后顺序来决定释放哪个已占用的页面渲染单元中的数据,也可以根据页面渲染单元的资源占用情况 (如缓存使用量)或页面的历史访问次数等参数决定释放哪个已占用的页面渲染单元中的数据。根据每个已占用的页面渲染单元最近一次加载页面数据的时间先后顺序来决定释放哪个已占用的页面渲染单元中的数据时,具体可以采用以下两种方案
一种方案是,建立页面渲染单元队列,当页面渲染单元被调用执行页面渲染处理时,将该页面渲染单元顺序放入该队列,这样就可以根据页面加载时间的先后排列各页面渲染单元,队首为加载时间最早的页面渲染单元,依次向后排,队尾为加载时间最晚的页面渲染单元。当需要在新窗口中加载页面,且页面渲染单元池中已经没有空闲的页面渲染单元时,则从该队列中调用页面渲染单元。这时,将优先释放队首的页面渲染单元中的数据,调用该页面渲染单元加载新的页面数据,该页面渲染单元在队列中的位置也将从队首调到队尾。另一种方案是,可以对应每个页面渲染单元设置计时器,在页面渲染单元每次加载页面数据时,其对应的计时器从零开始计时,这样计时器就可以记录下对应的页面渲染单元从最近一次加载数据开始直至当前的时长。当需要在新窗口中打开页面数据时且当前页面渲染单元池中没有空闲的页面渲染单元时,比较各已占用页面渲染单元对应的计时器记录的时长,对记录时长最长的计时器所对应的页面渲染单元中的数据进行释放,并调用该页面渲染单元加载新的页面数据,并将该页面渲染单元对应的计时器清零,使其重新从零开始计时。根据页面渲染单元的资源占用情况决定释放哪个已占用的页面渲染单元中的数据时,比较各页面渲染单元使用的缓存空间的大小,可以优先释放使用缓存空间最大的页面渲染单元中的数据。根据页面的历史访问次数决定释放哪个已占用的页面渲染单元中的数据时,可以记录已占用的页面渲染单元当前加载的页面的历史访问次数,并与其他页面渲染单元进行比较,可以优先释放对应页面的历史访问次数最少的页面渲染单元中的数据。本发明的上述实施例,采用页面渲染单元池,控制页面渲染单元池中页面渲染单元数量,当需要在新窗口中加载页面数据且页面渲染单元池没有空闲的页面渲染单元时,则根据预设规则释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据,综上所述,通过控制页面渲染单元使用数量,可节约浏览器内存占用量,使得浏览器保持运行流畅。
进一步的,为了减少页面请求时所产生的网络流量,可以在页面渲染单元加载页面数据之后,在本地保存页面渲染单元所加载的页面数据。这样,如果用户请求再次加载该页面数据(例如,用户在关闭掉腾讯网首页的窗口后,又提出加载腾讯网首页的请求;又例如,在标签式浏览器中,用户在打开第η个标签时将第I个标签下的窗口对应的页面渲染单元中的数据释放,此后,用户又通过点击第I个标签来请求打开第I个标签下的窗口),则可以直接调用本地保存的页面数据。例如,在进行页面加载的过程中,页面渲染单元池中已经没有空闲的页面渲染单元,根据预设规则释放已占用的页面渲染单元A中的页面数据(设此页面数据为DATAl ),这之前DATAl已经保存在了本地,在此情况下,如果希望再次浏览这个DATAl对应的页面时,可以直接获取本地存储的DATA1,并根据上述步骤101-104的流程调用页面渲染单元加载该DATAl。在浏览器客户端获取待加载的页面数据时,可以先判断本地是否保存有待加载页面的数据,如果是,则直接调用本地保存的待加载页面的数据,否则,可以从网络侧下载该待加载页面的数据。这样,在本地已保存了待加载页面的数据的情况下,则可以直接使用本地的页面数据,无需下载,有效的减少了网络资源的浪费。
如图2所示,本发明第二实施例同样提供一种浏览器页面加载方法,下面将结合在iPhone平台下使用标签式浏览器(在浏览器中每打开一个窗口都对应分配一个标签)并使用UIWebView作为页面渲染单元的应用场景,对本发明第二实施例提供的浏览器页面加载方法进行进一步详细阐述。在本实施例中,浏览器客户端获取待加载的页面数据与图I所示步骤101相类似,此处不再赘述,另外,在本实施例中,预先设定UIWebView池包含多个UIffebView,例如 5 个 UlWebView。如图2所示,所述浏览器页面加载流程具体包括步骤201、202、203、以及步骤204。步骤201,在获取页面数据且需要在新窗口中加载页面数据的时候,浏览器客户端判断UIWebView池中是否还有空闲的UIWebView实例,如果有,则执行步骤202,否则,执行步骤203。步骤202,浏览器客户端调用nWebView池中的一个空闲的HWebView实例进行页面数据加载处理,并且将该nWebView实例加入到WWebView队列的队尾位置,然后转入步骤 204。步骤203,浏览器客户端从已占用的UIWebView实例中选择最近一次加载页面数据的时间最早的,释放其中的页面数据,然后使用该UIWebView实例加载该获取到的页面数据,然后转入步骤204。继续应用上述例子,UIffebView池中预先实例化5个HWebView,如果现浏览器已经打开了 5个标签,即UIWebView池中的5个HWebView实例已都被占用,当需要打开第6个标签加载新页面数据时,则将队列中队首的UIWebView实例中的页面数据释放掉,使用此nWebView实例加载新的页面数据,并将其从队首调到队尾。优选的,可以在浏览器中保留该被释放的页面数据对应的标签。步骤204,浏览器客户端在本地保存该新窗口中加载的页面数据。上述流程中,每次在窗口中加载页面数据时,都可以将加载的页面数据保存在本地(如保存在硬盘上)。继续应用上述例子,在打开第6个标签加载新页面数据时,将会把队首的UIWebView实例(例如,是第I个标签对应的UIWebView实例)中的页面数据释放掉。这之后,第I个标签下的窗口处于未加载页面数据的状态,如果用户通过点击第I个标签来请求打开第I个标签下的窗口,可以直接获取本地保存的对应的页面数据,然后调用当前队首的UIWebView实例加载该页面数据。本发明的上述实施例,采用页面渲染单元池,控制页面渲染单元池中页面渲染单元数量,当需要在新窗口中加载页面数据且页面渲染单元池没有空闲的页面渲染单元时,则根据预设规则释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据。通过控制页面渲染单元使用数量,可节约浏览器内存占用量,使得浏览器保持运行流畅。本发明上述两个实施例都是针对需要打开新窗口加载所述待加载页面的情况,另夕卜,针对需要在原有窗口加载所述待加载页面的情况(例如,在某窗口中打开该窗口中页面的下级或上级页面,或者在该窗口对应的地址栏中输入新的地址以加载新的页面),本发明第三实施例提供了相应的页面加载流程。在浏览器客户端本地保存通过页面渲染单元加载
的页面数据的情况下,对于在同一个窗口中加载的页面的数据,可以对应该窗口并根据加载的先后顺序建立索引(例如,索引可以是多级页面中各级页面的加载顺序编号,也可以是加载顺序编号和窗口编号的组合,以便唯一标识一个页面)。如图3所示,本发明第三实施例所述的浏览器页面加载流程具体包括步骤301、302。步骤301,在浏览器客户端本地保存有待加载页面的数据的情况下,根据索引值调用本地保存的该待加载页面的数据。具体的,当接收到用户在当前窗口提交的查看前一页或后一页的请求时,根据当前窗口所加载的页面数据的索引值以及请求的类型(查看前一页或后一页的请求),从浏览器客户端本地保存的与当前窗口对应的页面数据中获取待加载页面的数据。例如,当前窗口中当前页面的页面数据的索引值是13(其中,I为窗口编号,3为窗口下的加载顺序编号),它的前一页的页面数据的索引值则是12,后一页的页面数据的索引值则是14,当请求的类型为查看前一页时,则获取索引值12对应的页面数据,此即为待加载页面的数据。步骤302,使用当前页面的页面渲染单元加载待加载页面的数据。本发明的上述实施例,通过在本地保存同一个窗口中加载过的多个页面的数据,减小了在对这些页面再次访问时网络资源的占用。基于相同的技术构思,本发明第四实施例提供了一种浏览器页面加载装置。如图4所示,所述浏览器页面加载装置包括
页面渲染单元池11,其中包含有预设数量的页面渲染单元;
获取模块12,用于获取待加载页面的数据;
加载模块13,用于当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据;以及,当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。优选的,所述加载模块13具体用于
根据各页面渲染单元最近一次加载页面数据的时间,释放其中时间最早的页面渲染单元中的数据。优选的,所述加载模块13还用于每次调用页面渲染单元后,将该页面渲染单元加入到页面渲染单元队列的队尾;
所述加载模块13释放页面渲染单元中的数据时具体用于释放所述页面渲染单元队列中队首的页面渲染单元中的数据。优选的,还包括
保存模块14,用于在浏览器客户端本地保存通过页面渲染单元加载的页面数据;所述获取模块12具体用于判断浏览器客户端本地是否保存有所述待加载页面的数据,如果是,则获取本地保存的待加载页面的数据;否则,从网络侧下载所述待加载页面的数据。优选的,所述保存模块14还用于对于在同一个窗口中加载的页面的数据,对应 该窗口并根据加载的先后顺序建立索引;
所述获取模块12具体用于在判断浏览器客户端本地保存有所述待加载页面的数据的情况下,当接收到用户在当前窗口提交的查看前一页或后一页的请求时,根据当前窗口所加载的页面数据的索引值以及请求的类型,从浏览器客户端本地保存的与当前窗口对应的页面数据中获取待加载页面的数据。本发明的上述实施例,采用页面渲染单元池,控制页面渲染单元池中页面渲染单元数量,当需要在新窗口中加载页面数据且页面渲染单元池没有空闲的页面渲染单元时,则根据预设规则释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据。通过控制页面渲染单元使用数量,可节约浏览器内存占用量,使得浏览器保持运行流畅。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
权利要求
1.一种浏览器页面加载方法,其特征在于,在浏览器客户端建立有页面渲染单元池,所述页面渲染单元池中包含有预设数量的页面渲染单元,该方法包括 获取待加载页面的数据; 当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据; 当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。
2.如权利要求I所述的方法,其特征在于,所述释放已占用的页面渲染单元中的数据包括 根据各页面渲染单元最近一次加载页面数据的时间,释放其中时间最早的页面渲染单元中的数据。
3.如权利要求2所述的方法,其特征在于,还包括每次调用页面渲染单元后,将该页面渲染单元加入到页面渲染单元队列的队尾; 所述释放其中时间最早的页面渲染单元中的数据包括释放所述页面渲染单元队列中队首的页面渲染单元中的数据。
4.如权利要求I所述的方法,其特征在于,还包括在浏览器客户端本地保存通过页面渲染单元加载的页面数据; 所述获取待加载页面的数据包括 判断浏览器客户端本地是否保存有所述待加载页面的数据,如果是,则获取本地保存的待加载页面的数据;否则,从网络侧下载所述待加载页面的数据。
5.如权利要求4所述的方法,其特征在于,在浏览器客户端本地保存通过页面渲染单元加载的页面数据时,对于在同一个窗口中加载的页面的数据,对应该窗口并根据加载的先后顺序建立索引; 在判断浏览器客户端本地保存有所述待加载页面的数据的情况下,所述获取本地保存的待加载页面的数据包括 当接收到用户在当前窗口提交的查看前一页或后一页的请求时,根据当前窗口所加载的页面数据的索引值以及请求的类型,从浏览器客户端本地保存的与当前窗口对应的页面数据中获取待加载页面的数据。
6.一种浏览器页面加载装置,其特征在于,包括 页面渲染单元池,其中包含有预设数量的页面渲染单元; 获取模块,用于获取待加载页面的数据; 加载模块,用于当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据;以及,当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。
7.如权利要求6所述的装置,其特征在于,所述加载模块用于根据各页面渲染单元最近一次加载页面数据的时间,释放其中时间最早的页面渲染单元中的数据。
8.如权利要求7所述的装置,其特征在于,所述加载模块还用于每次调用页面渲染单元后,将该页面渲染单元加入到页面渲染单元队列的队尾; 所述加载模块释放页面渲染单元中的数据时用于释放所述页面渲染单元队列中队首的页面渲染单元中的数据。
9.如权利要求6所述的装置,其特征在于,还包括 保存模块,用于在浏览器客户端本地保存通过页面渲染单元加载的页面数据; 所述获取模块用于判断浏览器客户端本地是否保存有所述待加载页面的数据,如果是,则获取本地保存的待加载页面的数据;否则,从网络侧下载所述待加载页面的数据。
10.如权利要求9所述的装置,其特征在于,所述保存模块还用于对于在同一个窗口中加载的页面的数据,对应该窗口并根据加载的先后顺序建立索引; 所述获取模块用于在判断浏览器客户端本地保存有所述待加载页面的数据的情况下,当接收到用户在当前窗口提交的查看前一页或后一页的请求时,根据当前窗口所加载的页面数据的索引值以及请求的类型,从浏览器客户端本地保存的与当前窗口对应的页面数据中获取待加载页面的数据。
全文摘要
本发明公开了一种浏览器页面加载方法,在浏览器客户端建立有页面渲染单元池,所述页面渲染单元池中包含有预设数量的页面渲染单元,该方法包括获取待加载页面的数据;当需要打开新窗口加载所述待加载页面时,判断页面渲染单元池中是否存在空闲的页面渲染单元;如果存在空闲的页面渲染单元,则调用空闲的页面渲染单元加载所述待加载页面的数据;否则,释放已占用的页面渲染单元中的数据,并使用释放数据后的页面渲染单元加载所述待加载页面的数据;当需要在原有窗口加载所述待加载页面时,使用该原有窗口对应的页面渲染单元加载所述待加载页面的数据。另外,本发明还对应提供一种加载装置。采用本发明,减少了打开过多浏览器窗口时对内存的占用。
文档编号G06F17/30GK102880616SQ20111019857
公开日2013年1月16日 申请日期2011年7月15日 优先权日2011年7月15日
发明者王刚, 何明 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1