CN104268229A - 一种基于多进程浏览器的资源获得方法及装置 - Google Patents
一种基于多进程浏览器的资源获得方法及装置 Download PDFInfo
- Publication number
- CN104268229A CN104268229A CN201410504006.2A CN201410504006A CN104268229A CN 104268229 A CN104268229 A CN 104268229A CN 201410504006 A CN201410504006 A CN 201410504006A CN 104268229 A CN104268229 A CN 104268229A
- Authority
- CN
- China
- Prior art keywords
- resource
- resource data
- data
- shared
- type
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种基于多进程浏览器的资源获得方法及装置,涉及计算机技术领域,其中,所述方法包括:浏览器子进程确定待加载资源的标识;根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,其中,所述进程间共享内存中的资源数据,是由浏览器主进程预先存储的;若存在,获得所确定的待加载资源的标识对应的资源数据。应用本发明实施例提供的资源获得方案获得资源数据时,能够节省内存资源。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于浏览器的资源获得方法及装置。
背景技术
随着硬件技术的发展,各种终端的计算能力越来越强,能够支持用户通过多进程模式的浏览器浏览网页,其中,多进程模式的浏览器运行时,调用一个主进程,并可由该主进程调用至少一个子进程,例如:子进程可以是渲染进程、工具进程等等。一般情况下,上述子进程是在受限的环境中运行的,它们没有权限直接获得用户数据或者直接从网络侧获得网页数据等等,而只有主进程具有获得这些数据的权限。
鉴于上述原因,现有技术中,通过浏览器浏览网页时,一般的实现方式是:主进程把资源数据(例如:图片、文本、脚本、配置信息等等)加载至内存中,子进程通过与主进程通信的方式访问主进程所加载的资源数据。
以渲染进程与主进程之间的通信为例,渲染进程渲染网页时,通常通过以下步骤获得资源数据:
主进程加载目标资源的资源数据至内存中,并对所加载的资源数据进行序列化处理,将序列化处理后的数据存储至相应的内存区域,再将上述序列化处理后的数据复制到用于进程间通信时发送数据的内存区域;
主进程根据进程间通信机制,将用于进程间通信时发送数据的内存区域中的数据发送至用于进程间通信时接收数据的内存区域中;
渲染进程对用于进程间通信时接收数据的内存区域中的数据进行反序列化处理,并将反序列化处理后的数据存储至相应的内存区域,最后将上述反序列化处理后的数据复制到渲染进程中用于网页渲染的内存区域,至此,渲染进程获得目标资源的资源数据。
由以上步骤可见,子进程通过进程间通信机制获得资源数据时,需要多次内存操作,内存需求较大。
发明内容
本发明实施例公开了一种基于多进程浏览器的资源获得方法及装置,以节省内存资源。
为达到上述目的,本发明实施例公开了一种基于多进程浏览器的资源获得方法,所述方法包括:
浏览器子进程确定待加载资源的标识;
根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,其中,所述进程间共享内存中的资源数据,是由浏览器主进程预先存储的;
若存在,获得所确定的待加载资源的标识对应的资源数据。
可选的,在浏览器主进程将共享资源的资源数据存储至所述进程间共享内存之后,还包括:
获得所述共享资源的资源数据在所述进程间共享内存中的相对存储地址,其中,所获得的相对存储地址为:相对于所述进程间共享内存的起始物理存储地址的存储地址;
根据所述共享资源的标识和所获得的相对存储地址,更新所述进程间共享内存中预设的Key-Value映射表,其中,Key表示所述共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
可选的,在浏览器主进程将共享资源的资源数据存储至所述进程间共享内存之前,还包括:
浏览器主进程判断共享资源是否满足预设的共享资源判定规则;
若满足,则执行浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的步骤。
可选的,所述获得所确定的待加载资源的标识对应的资源数据,包括:
根据所确定的待加载资源的Key值,从所述Key-Value映射表中,获得所确定的待加载资源的相对存储地址;
获得所述进程间共享内存针对所述浏览器子进程的映射地址;
根据所获得的数据索引值和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址;
根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
可选的,浏览器主进程向所述进程间共享内存中存储资源数据的类型,包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析;
对解析后的资源数据进行序列化处理;
将序列化处理后的数据存储至所述进程间共享内存中。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理;
将解码处理后的数据存储至所述进程间共享内存中。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程将共享资源的资源数据的原始数据存储至所述进程间共享内存中。
为达到上述目的,本发明实施例公开了一种基于多进程浏览器的资源获得装置,所述装置包括:
浏览器主进程模块和浏览器子进程模块;
其中,所述浏览器主进程模块,包括:资源数据存储子模块;
所述浏览器子进程模块,包括:资源标识确定子模块、资源数据判断子模块和资源数据获得子模块;
所述资源标识确定子模块,用于确定待加载资源的标识;
所述资源数据判断子模块,用于根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,若存在,触发所述资源数据获得子模块获得资源数据;
所述资源数据获得子模块,用于获得所确定的待加载资源的标识对应的资源数据;
所述资源数据存储子模块,用于向所述进程间共享内存中预先存储资源数据。
可选的,所述浏览器主进程模块还包括:
相对存储地址获得子模块,用于在所述资源数据存储子模块存储共享资源的资源数据后,获得所述共享待加载资源的资源数据在所述进程间共享内存中的相对存储地址,其中,所获得的相对存储地址为:相对于所述进程间共享内存的起始物理存储地址的存储地址;
映射表更新子模块,用于根据所述共享待加载资源的标识和所获得的相对存储地址,更新所述进程间共享内存中预设的Key-Value映射表,其中,Key表示所述共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
可选的,所述浏览器主进程模块还包括:
待加载资源判断子模块,用于判断共享资源是否满足预设的共享资源判定规则,若满足,触发所述资源数据存储子模块存储所述共享资源的资源数据。
可选的,所述资源数据获得子模块,包括:
数据索引值获得单元,用于根据所确定的待加载资源的Key值,从所述Key-Value映射表中,获得所确定的待加载资源的相对存储地址;
映射地址获得单元,用于获得所述进程间共享内存针对所述浏览器子进程的映射地址;
物理存储地址计算单元,用于根据所获得的数据索引值和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址;
资源数据获得单元,用于根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
可选的,浏览器主进程向所述进程间共享内存中存储资源数据的类型,包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
所述资源数据存储子模块,包括:
资源数据解析单元,用于按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析;
序列化处理单元,用于对解析后的资源数据进行序列化处理;
第一数据存储单元,用于将序列化处理后的数据存储至所述进程间共享内存中。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
所述资源数据存储子模块,包括:
解码处理单元,用于按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理;
第二数据存储单元,用于将解码处理后的数据存储至所述进程间共享内存中。
可选的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
所述资源数据存储子模块,具体用于将共享资源的资源数据的原始数据存储至所述进程间共享内存中。
由于上可见,本发明实施例提供的方案中,由浏览器主进程预先将资源数据存储至进程间共享内存中,在浏览器子进程需获得待加载资源的资源数据时,从上述的进程间共享内存中直接获得相关的资源数据。与现有技术相比,应用本发明实施例提供的方案获得资源数据时,只需一次从进程间共享内存到浏览器子进程的相应内存区域的内存操作即可,而无需进行多次内存操作,因此,能够节省内存资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于多进程浏览器的资源获得方法的流程示意图;
图2为本发明实施例提供的另一种基于多进程浏览器的资源获得方法的流程示意图;
图3为发明实施例提供的一种基于多进程浏览器的资源获得装置的结构示意图;
图4为发明实施例提供的另一种基于多进程浏览器的资源获得装置的结构示意图;
图5为红黑树示意图;
图6为图5红黑树中一个节点的数据结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种基于多进程浏览器的资源获得方法的流程示意图,该方法包括:
S101:浏览器子进程确定待加载资源的标识。
实际应用中,启动多进程浏览器后,首先调用一个浏览器主进程,再由该主进程调用一个或多个浏览器子进程。由于浏览器子进程一般是在受限的环境中运行的,不能够直接获得用户数据或者从网络侧获得网页的数据,所以,浏览器子进程只能先根据网页源代码确定出待加载资源的标识,再通过与主进程通信的方式或者访问进程间共享内存的方式获得待加载资源的资源数据。
S102:根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,若存在,执行S103,否则,执行S104。
其中,进程间共享内存中的资源数据,是由浏览器主进程预先存储的。实际应用中,为便于在进程间共享内存中查找相应的资源,在该内存区域存储资源数据后,可将该资源数据对应的信息记录在预设的映射表中。
具体的,浏览器主进程将共享资源的资源数据存储至进程间共享内存之后,可以先获得共享资源的资源数据在该进程间共享内存中的相对存储地址,再根据该共享资源的标识和所获得的相对存储地址,更新进程间共享内存中预设的Key-Value映射表,其中,Key表示共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
进一步的,上述的Value值还可以包括:资源数据的类型、大小等信息。
另外,上述所获得的相对存储地址为:相对于进程间共享内存的起始物理存储地址的存储地址。
浏览器主进程将共享资源的资源数据存储至进程间共享内存中,可以在启动浏览器之后,开始渲染网页之前进行,也可以在渲染网页的过程中进行,本申请并不限定上述步骤的执行时间。
本领域内的技术人员可以理解的是,上述的Key-Value映射表可以是基于红黑树算法生成的,红黑树算法属于现有技术,这里不再重复。
另外,考虑到进程间共享内存有限,本发明的一个优选实施例中,在浏览器主进程将共享资源的资源数据存储至进程间共享内存之前,浏览器主进程还可以先判断共享资源是否满足预设的共享资源判定规则,在满足该判定规则的情况,再由浏览器主进程将共享资源的资源数据存储至进程间共享内存。
其中,预设的共享资源判定规则,可以是资源的访问频率是否大于某一阈值、资源的类型是否为预设的类型等等。本申请并不限定共享资源判定规则的具体内容。
浏览器主进程向进程间共享内存中存储资源数据的类型,可以包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
当然,本申请只是以上述为例进行说明,实际应用中,资源数据的类型并不仅限于上述几种。
例如,JSON类型的数据可以是:渲染器配置资源,该资源用于指示渲染进程如何渲染网页;
Image类型的数据可以是:图像,如:背景图像等;
JavaScript类型的数据可以是:脚本资源,如:用户自定义脚本或扩展脚本等;
RegExp类型的数据可以是:广告过滤规则,该资源用于过滤网页中的广告;
Text类型的数据可以是:多语言资源,该资源用于根据不同运行环境显示不同的语言;
Binary类型的数据是二进制数据,用于保存任何类型的数据。
S103:获得所确定的待加载资源的标识对应的资源数据。
S104:结束本流程。
在本发明的一种具体实现方式中,进程间共享内存中不存在所确定的标识对应的资源数据时,浏览器子进程可以向浏览器主进程发送资源请求,浏览器主进程接收到该请求后,从网络侧获得相应的资源数据,并通过进程间通信或者访问进程间共享内存的方式,向浏览器子进程发送相应的资源数据。
由前述描述可知,浏览器主进程向进程间共享内存中存储资源数据可以有多种类型,下面分情况进行详细说明。
一、在浏览器主进程向进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
浏览器主进程将共享资源的资源数据存储至进程间共享内存时,浏览器主进程可以先按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析,再对解析后的资源数据进行序列化处理,之后再将序列化处理后的数据存储至进程间共享内存中。
与上述的浏览器主进程向进程间共享内存中存储资源数据相对应,浏览器子进程获得类型为JSON类型的资源数据时,获得所确定的待加载资源的标识对应的资源数据可以包括以下步骤:
浏览器子进程从进程间共享内存中获得所确定的待加载资源的标识对应的数据;
对所获得的数据进行反序列化处理,即得到所确定的待加载资源的标识对应的资源数据。
由以上可见,资源数据的类型为JSON类型时,若多个浏览器子进程均需访问进程间共享内存中的某一存储资源时,浏览器主进程只需进行一次序列处理,并将处理后的数据存在该共享内存中即可,而不需要针对每个浏览器子进程的访问需求进行多次序列化处理,各个浏览器子进程从进程间共享内存中获得数据后,进行相应的反序列化处理,即得到相应的资源数据。
二、在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
浏览器主进程将共享资源的资源数据存储至进程间共享内存时,浏览器主进程可以先按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理,得到该图像数据的大小、颜色格式、各像素点的像素值等数据,再将这些解码处理后的数据存储至进程间共享内存中。
与上述的浏览器主进程向进程间共享内存中存储资源数据相对应,浏览器子进程获得类型为Image类型的资源数据时,浏览器子进程从进程间共享内存中获得的数据即为所确定的待加载资源的标识对应的资源数据。
由以上可见,资源数据的类型为Image类型时,若多个浏览器子进程均需访问进程间共享内存中的某一存储资源时,浏览器主进程只需进行一次图像解码处理,不需要针对每个浏览器子进程的访问需求进行多次解码处理,且浏览器子进程只需从进程间共享内存中获得相应数据,而无需其他内存操作。
三、在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
浏览器主进程将共享资源的资源数据存储至进程间共享内存时,浏览器主进程将共享资源的资源数据的原始数据存储至进程间共享内存中即可。
与上述的浏览器主进程向进程间共享内存中存储资源数据相对应,浏览器子进程获得类型为JavaScript类型或RegExp类型的资源数据时,浏览器子进程对从进程间共享内存获得的相应数据进行解析后,即得到所确定的待加载资源的标识对应的资源数据。
综合以上,资源数据为JavaScript类型、RegExp类型或Text类型时,若多个浏览器子进程均需访问进程间共享内存中的某一存储资源时,浏览器主进程只需将资源数据的原始数据存储到进程间共享内存即可,不要其他的任何内存操作。
由于上可见,本发明实施例提供的方案中,由浏览器主进程预先将资源数据存储至进程间共享内存中,在浏览器子进程需获得待加载资源的资源数据时,从上述的进程间共享内存中直接获得相关的资源数据。与现有技术相比,应用本发明实施例提供的方案获得资源数据时,只需一次从进程间共享内存到浏览器子进程的相应内存区域的内存操作即可,而无需进行多次内存操作,因此,能够节省内存资源。
在本发明的一个具体实施例中,参见图2,提供了另一种基于多进程浏览器的资源获得方法的流程示意图,与前述实施例相比,本实施例中,
根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据(S102),具体的可以是:
S102A:根据所确定的待加载资源的Key值,在预设的Key-Value映射表中,判断进程间共享内存中是否存在该标识对应的资源数据。
获得所确定的待加载资源的标识对应的资源数据(S103),包括:
S103A:根据所确定的待加载资源的Key值,从Key-Value映射表中,获得所确定的待加载资源的相对存储地址。
S103B:获得进程间共享内存针对上述浏览器子进程的映射地址。
实际应用中,一台终端中一般只有一块共享内存区域,且该共享内存的物理存储地址是唯一的,然而,浏览器子进程在访问进程间共享内存时,无法直接得到该进程间共享内存的物理存储地址,只能得到该进程间共享内存针对该浏览器子进程的映射地址,且该进程间共享内存针对不同浏览器子进程中的映射地址可能不同,例如,进程间共享内存针对一个浏览器子进程中的映射地址为100,针对另外一个浏览器子进程中的映射地址则可能为1000。
其中,进程间共享内存的物理存储地址与其针对各个浏览器子进程的映射地址之间的对应关系由操作系统设置并记录。操作系统设置上述对应关系属于现有技术,这里不再详述。
S103C:根据所获得的相对存储地址和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址。
由前述描述可知,进程间共享内存的物理存储地址与映射地址之间的对应关系由操作系统设置并记录,所以,获得映射地址后,可以根据操作系统记录的映射关系得到进程间共享内存的物理存储地址,又由于所获得的相对存储地址为相对于进程间共享内存的起始物理地址的存储地址,所以,根据进程间共享内存的物理存储地址和所获得相对存储地址即可确定所确定的待加载资源的Key值对应的资源数据的物理存储地址。
假设,所获得的相对存储地址为D1,所获得的映射地址为D2,操作系统根据其记录的映射关系确定D2对应的物理存储地址为D3,则所确定的待加载资源的Key值对应的资源数据的物理存储地址为:D1+D3。
S103D:根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
由以上可见,本实施例提供的方案中,通过资源数据在进程间共享内存中的相对存储地址以及进程间共享内存在浏览器子进程中的映射地址确定资源数据的物理存储地址,并根据该地址获得资源数据,解决了现有技术中由于进程间无法共享指针,而无法获得资源数据的存储地址的问题。
下面以红黑树为例,说明如何获得一个待加载资源的资源数据。
图5为红黑树示意图,图6为图5红黑树中一个节点的数据结构示意图。
S101:假设,浏览器子进程确定待加载资源的Key值为15。
S102A:根据所确定的待加载资源的Key值15,在进程间共享内存中预设的Key-Value映射表中,按照以下步骤确定进程间共享内存中是否存在与该Key值对应的资源数据:
图5红黑树中,起始节点13的左孩子节点为8,右孩子节点为17,由于13<15,则沿着起始节点13的右孩子节点17继续判断;
节点17的左孩子节点为15,右孩子节点为25,可见,节点17的左孩子节点与S101所确定的待加载资源的Key值15相等,因此,进程间共享内存中存在该待加载资源的资源数据。
S103A:根据节点数据结构可以得到上述待加载资源的资源数据的相对存储地址D1。
S103B:获得进程间共享内存在当前浏览器子进程中的映射地址D2。
S103C:根据S103B获得映射地址D2、操作系统记录的映射关系,以及S103A获得的相对存储地址D1,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址。
S103D:根据计算得到的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
与上述的基于多进程浏览器的资源获得方法相对应,本发明实施例还提供了一种基于多进程浏览器的资源获得装置。
图3为本发明实施例提供的一种基于多进程浏览器的资源获得装置的结构示意图,该装置包括:浏览器主进程模块301和浏览器子进程模块302。
其中,浏览器主进程模块301,包括:资源数据存储子模块3011;
浏览器子进程模块302,包括:资源标识确定子模块3021、资源数据判断子模块3022和资源数据获得子模块3023。
具体的,资源标识确定子模块3021,用于确定待加载资源的标识;
资源数据判断子模块3022,用于根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,若存在,触发所述资源数据获得子模块3022获得资源数据;
资源数据获得子模块3023,用于获得所确定的待加载资源的标识对应的资源数据;
资源数据存储子模块3011,用于向所述进程间共享内存中预先存储资源数据。
在本发明的一个优选实施例中,浏览器主进程模块301还包括:相对存储地址获得子模块和映射表更新子模块(图中未示出)。
其中,相对存储地址获得子模块,用于在所述资源数据存储子模块存储共享资源的资源数据后,获得所述共享资源的资源数据在所述进程间共享内存中的相对存储地址,其中,所获得的相对存储地址为:相对于所述进程间共享内存的起始物理存储地址的存储地址;
映射表更新子模块,用于根据所述共享资源的标识和所获得的相对存储地址,更新所述进程间共享内存中预设的Key-Value映射表,其中,Key表示所述共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
在本发明的一个优选实施例中,浏览器主进程模块301还包括:待加载资源判断子模块(图中未示出)。
其中,待加载资源判断子模块,用于判断共享资源是否满足预设的共享资源判定规则,若满足,触发所述资源数据存储子模块3011存储所述共享资源的资源数据。
具体的,浏览器主进程向所述进程间共享内存中存储资源数据的类型,包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
具体的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
资源数据存储子模块3011,包括:资源数据解析单元、序列化处理单元和第一数据存储单元(图中未示出)。
其中,资源数据解析单元,用于按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析;
序列化处理单元,用于对解析后的资源数据进行序列化处理;
第一数据存储单元,用于将序列化处理后的数据存储至所述进程间共享内存中。
具体的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
资源数据存储子模块3011,包括:解码处理单元和第二数据存储单元(图中未示出)。
其中,解码处理单元,用于按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理;
第二数据存储单元,用于将解码处理后的数据存储至所述进程间共享内存中。
具体的,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
资源数据存储子模块3011,具体用于将共享资源的资源数据的原始数据存储至所述进程间共享内存中。
由于上可见,本发明实施例提供的方案中,由浏览器主进程预先将资源数据存储至进程间共享内存中,在浏览器子进程需获得待加载资源的资源数据时,从上述的进程间共享内存中直接获得相关的资源数据。与现有技术相比,应用本发明实施例提供的方案获得资源数据时,只需一次从进程间共享内存到浏览器子进程的相应内存区域的内存操作即可,而无需进行多次内存操作,因此,能够节省内存资源。
在本发明的一个具体实施例中,参见图4,提供了另一种基于多进程浏览器的资源获得装置的结构示意图,与前述实施例相比,本实施例中,资源数据获得子模块3023,包括:数据索引值获得单元30231、映射地址获得单元30232、物理存储地址确定单元30233和资源数据获得单元30234。
其中,数据索引值获得单元30231,用于根据所确定的待加载资源的Key值,从所述Key-Value映射表中,获得所确定的待加载资源的相对存储地址;
映射地址获得单元30232,用于获得所述进程间共享内存针对所述浏览器子进程的映射地址;
物理存储地址确定单元30233,用于根据所获得的数据索引值和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址;
资源数据获得单元30234,用于根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
由以上可见,本实施例提供的方案中,通过资源数据在进程间共享内存中的相对存储地址以及进程间共享内存在浏览器子进程中的映射地址确定资源数据的物理存储地址,并根据该地址获得资源数据,解决了现有技术中由于进程间无法共享指针,而无法获得资源数据的存储地址的问题。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种基于多进程浏览器的资源获得方法,其特征在于,所述方法包括:
浏览器子进程确定待加载资源的标识;
根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,其中,所述进程间共享内存中的资源数据,是由浏览器主进程预先存储的;
若存在,获得所确定的待加载资源的标识对应的资源数据。
2.根据权利要求1所述的方法,其特征在于,在浏览器主进程将共享资源的资源数据存储至所述进程间共享内存之后,还包括:
获得所述共享资源的资源数据在所述进程间共享内存中的相对存储地址,其中,所获得的相对存储地址为:相对于所述进程间共享内存的起始物理存储地址的存储地址;
根据所述共享资源的标识和所获得的相对存储地址,更新所述进程间共享内存中预设的Key-Value映射表,其中,Key表示所述共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
3.根据权利要求2所述的方法,其特征在于,在浏览器主进程将共享资源的资源数据存储至所述进程间共享内存之前,还包括:
浏览器主进程判断共享资源是否满足预设的共享资源判定规则;
若满足,则执行浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的步骤。
4.根据权利要求2或3所述的方法,其特征在于,所述获得所确定的待加载资源的标识对应的资源数据,包括:
根据所确定的待加载资源的Key值,从所述Key-Value映射表中,获得所确定的待加载资源的相对存储地址;
获得所述进程间共享内存针对所述浏览器子进程的映射地址;
根据所获得的相对存储地址和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址;
根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
5.根据权利要求1所述的方法,其特征在于,浏览器主进程向所述进程间共享内存中存储资源数据的类型,包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
6.根据权利要求5所述的方法,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析;
对解析后的资源数据进行序列化处理;
将序列化处理后的数据存储至所述进程间共享内存中。
7.根据权利要求5所述的方法,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理;
将解码处理后的数据存储至所述进程间共享内存中。
8.根据权利要求5所述的方法,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
浏览器主进程将共享资源的资源数据存储至所述进程间共享内存的方法,包括:
浏览器主进程将共享资源的资源数据的原始数据存储至所述进程间共享内存中。
9.一种基于多进程浏览器的资源获得装置,其特征在于,所述装置包括:
浏览器主进程模块和浏览器子进程模块;
其中,所述浏览器主进程模块,包括:资源数据存储子模块;
所述浏览器子进程模块,包括:资源标识确定子模块、资源数据判断子模块和资源数据获得子模块;
所述资源标识确定子模块,用于确定待加载资源的标识;
所述资源数据判断子模块,用于根据所确定的待加载资源的标识,判断进程间共享内存中是否存在该标识对应的资源数据,若存在,触发所述资源数据获得子模块获得资源数据;
所述资源数据获得子模块,用于获得所确定的待加载资源的标识对应的资源数据;
所述资源数据存储子模块,用于向所述进程间共享内存中预先存储资源数据。
10.根据权利要求9所述的装置,其特征在于,所述浏览器主进程模块还包括:
相对存储地址获得子模块,用于在所述资源数据存储子模块存储共享资源的资源数据后,获得所述共享资源的资源数据在所述进程间共享内存中的相对存储地址,其中,所获得的相对存储地址为:相对于所述进程间共享内存的起始物理存储地址的存储地址;
映射表更新子模块,用于根据所述共享资源的标识和所获得的相对存储地址,更新所述进程间共享内存中预设的Key-Value映射表,其中,Key表示所述共享资源的标识,Value值包括:所获得的相对存储地址,Key-Value映射表,用于存储Key与Value之间的映射关系。
11.根据权利要求10所述的装置,其特征在于,所述浏览器主进程模块还包括:
待加载资源判断子模块,用于判断共享资源是否满足预设的共享资源判定规则,若满足,触发所述资源数据存储子模块存储所述共享资源的资源数据。
12.根据权利要求10或11所述的装置,其特征在于,所述资源数据获得子模块,包括:
数据索引值获得单元,用于根据所确定的待加载资源的Key值,从所述Key-Value映射表中,获得所确定的待加载资源的相对存储地址;
映射地址获得单元,用于获得所述进程间共享内存针对所述浏览器子进程的映射地址;
物理存储地址确定单元,用于根据所获得的数据索引值和映射地址,确定所确定的待加载资源的Key值对应的资源数据的物理存储地址;
资源数据获得单元,用于根据所确定的物理存储地址,获得所确定的待加载资源的Key值对应的资源数据。
13.根据权利要求9所述的装置,其特征在于,浏览器主进程向所述进程间共享内存中存储资源数据的类型,包括以下几种中的至少一种:
JSON类型、Image类型、Binary类型、JavaScript类型、RegExp类型和Text类型。
14.根据权利要求13所述的装置,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为JSON类型的情况下,
所述资源数据存储子模块,包括:
资源数据解析单元,用于按照JSON类型的数据对应的解析规则,对共享资源的资源数据进行解析;
序列化处理单元,用于对解析后的资源数据进行序列化处理;
第一数据存储单元,用于将序列化处理后的数据存储至所述进程间共享内存中。
15.根据权利要求13所述的装置,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Image类型的情况下,
所述资源数据存储子模块,包括:
解码处理单元,用于按照Image类型的数据对应的图像解码规则,对共享资源的资源数据进行解码处理;
第二数据存储单元,用于将解码处理后的数据存储至所述进程间共享内存中。
16.根据权利要求13所述的装置,其特征在于,在浏览器主进程向所述进程间共享内存中存储的资源数据的类型为Binary类型、JavaScript类型、RegExp类型或Text类型的情况下,
所述资源数据存储子模块,具体用于将共享资源的资源数据的原始数据存储至所述进程间共享内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410504006.2A CN104268229B (zh) | 2014-09-26 | 2014-09-26 | 一种基于多进程浏览器的资源获得方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410504006.2A CN104268229B (zh) | 2014-09-26 | 2014-09-26 | 一种基于多进程浏览器的资源获得方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268229A true CN104268229A (zh) | 2015-01-07 |
CN104268229B CN104268229B (zh) | 2018-01-19 |
Family
ID=52159751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410504006.2A Active CN104268229B (zh) | 2014-09-26 | 2014-09-26 | 一种基于多进程浏览器的资源获得方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268229B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955971A (zh) * | 2015-11-30 | 2016-09-21 | 中国银联股份有限公司 | 一种键值缓存的实现方法及装置 |
CN106056530A (zh) * | 2016-06-01 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 应用中图片内容的显示方法及装置 |
CN109543437A (zh) * | 2018-11-30 | 2019-03-29 | 人教数字出版有限公司 | 一种加载资源方法和装置 |
CN109582458A (zh) * | 2017-09-28 | 2019-04-05 | 北京国双科技有限公司 | 资源信息加载方法、装置、存储介质及处理器 |
CN109729362A (zh) * | 2019-01-10 | 2019-05-07 | 高新兴科技集团股份有限公司 | 视频解码播放方法、装置、计算机存储介质及电子设备 |
CN111124685A (zh) * | 2019-12-26 | 2020-05-08 | 神州数码医疗科技股份有限公司 | 大数据处理方法、装置、电子设备和存储介质 |
CN111182060A (zh) * | 2019-12-30 | 2020-05-19 | 北京健康之家科技有限公司 | 报文的检测方法及装置 |
CN111382200A (zh) * | 2018-12-29 | 2020-07-07 | 北京中交兴路信息科技有限公司 | 信息加载方法、装置、服务器及存储介质 |
CN111760293A (zh) * | 2020-07-07 | 2020-10-13 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN113918244A (zh) * | 2021-09-28 | 2022-01-11 | 山石网科通信技术股份有限公司 | 热补丁处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530329A (zh) * | 2013-09-27 | 2014-01-22 | 北京奇虎科技有限公司 | 一种进行网页加载的方法、装置和浏览器 |
US8683099B1 (en) * | 2012-06-14 | 2014-03-25 | Emc Corporation | Load balancing of read/write accesses on a single host device |
CN103699535A (zh) * | 2012-09-27 | 2014-04-02 | 联想(北京)有限公司 | 网页加载方法及终端设备 |
CN103701911A (zh) * | 2013-12-30 | 2014-04-02 | 百度在线网络技术(北京)有限公司 | 通过浏览器进行下载的方法和装置 |
CN103838839A (zh) * | 2011-09-26 | 2014-06-04 | 北京奇虎科技有限公司 | 一种ie内核浏览器的页面下载控制方法和系统 |
CN103902675A (zh) * | 2011-02-18 | 2014-07-02 | 北京奇虎科技有限公司 | 一种分配浏览器进程的方法及其设备 |
-
2014
- 2014-09-26 CN CN201410504006.2A patent/CN104268229B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902675A (zh) * | 2011-02-18 | 2014-07-02 | 北京奇虎科技有限公司 | 一种分配浏览器进程的方法及其设备 |
CN103838839A (zh) * | 2011-09-26 | 2014-06-04 | 北京奇虎科技有限公司 | 一种ie内核浏览器的页面下载控制方法和系统 |
US8683099B1 (en) * | 2012-06-14 | 2014-03-25 | Emc Corporation | Load balancing of read/write accesses on a single host device |
CN103699535A (zh) * | 2012-09-27 | 2014-04-02 | 联想(北京)有限公司 | 网页加载方法及终端设备 |
CN103530329A (zh) * | 2013-09-27 | 2014-01-22 | 北京奇虎科技有限公司 | 一种进行网页加载的方法、装置和浏览器 |
CN103701911A (zh) * | 2013-12-30 | 2014-04-02 | 百度在线网络技术(北京)有限公司 | 通过浏览器进行下载的方法和装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955971A (zh) * | 2015-11-30 | 2016-09-21 | 中国银联股份有限公司 | 一种键值缓存的实现方法及装置 |
CN105955971B (zh) * | 2015-11-30 | 2019-09-17 | 中国银联股份有限公司 | 一种键值缓存的实现方法及装置 |
CN106056530B (zh) * | 2016-06-01 | 2019-12-06 | 腾讯科技(深圳)有限公司 | 应用中图片内容的显示方法及装置 |
CN106056530A (zh) * | 2016-06-01 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 应用中图片内容的显示方法及装置 |
US10825130B2 (en) | 2016-06-01 | 2020-11-03 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for displaying picture content in application, and storage medium |
US10636113B2 (en) | 2016-06-01 | 2020-04-28 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for displaying picture content in application, and storage medium |
CN109582458A (zh) * | 2017-09-28 | 2019-04-05 | 北京国双科技有限公司 | 资源信息加载方法、装置、存储介质及处理器 |
CN109543437A (zh) * | 2018-11-30 | 2019-03-29 | 人教数字出版有限公司 | 一种加载资源方法和装置 |
CN111382200A (zh) * | 2018-12-29 | 2020-07-07 | 北京中交兴路信息科技有限公司 | 信息加载方法、装置、服务器及存储介质 |
CN109729362A (zh) * | 2019-01-10 | 2019-05-07 | 高新兴科技集团股份有限公司 | 视频解码播放方法、装置、计算机存储介质及电子设备 |
CN111124685A (zh) * | 2019-12-26 | 2020-05-08 | 神州数码医疗科技股份有限公司 | 大数据处理方法、装置、电子设备和存储介质 |
CN111182060A (zh) * | 2019-12-30 | 2020-05-19 | 北京健康之家科技有限公司 | 报文的检测方法及装置 |
CN111760293A (zh) * | 2020-07-07 | 2020-10-13 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN111760293B (zh) * | 2020-07-07 | 2024-02-09 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN113918244A (zh) * | 2021-09-28 | 2022-01-11 | 山石网科通信技术股份有限公司 | 热补丁处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104268229B (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268229A (zh) | 一种基于多进程浏览器的资源获得方法及装置 | |
US11003625B2 (en) | Method and apparatus for operating on file | |
US9536261B2 (en) | Resolving conflicts within saved state data | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
US20180107725A1 (en) | Data Storage Method and Apparatus, and Data Read Method and Apparatus | |
KR20200043467A (ko) | 웹페이지 콘텐츠를 추출하기 위한 방법 및 단말 장치 | |
US11086638B2 (en) | Method and apparatus for loading application | |
CN102567485B (zh) | 用于内容检索的提供商专用解析 | |
CN113158110B (zh) | 一种数据处理方法和设备 | |
CN108268609B (zh) | 一种文件路径的建立、访问方法和装置 | |
CN109388766A (zh) | 页面加载的方法和装置 | |
CN112579118B (zh) | 微服务的配置信息更新方法、装置、系统、介质和设备 | |
CN103530160A (zh) | 一种页面加载的方法和装置 | |
CN111274512A (zh) | 一种页面加载方法、装置及介质 | |
CN111079048A (zh) | 一种页面加载方法及装置 | |
CN112346761B (zh) | 前端资源上线方法、设备、系统及存储介质 | |
US20180365032A1 (en) | Method for Interface Refresh Synchronization, Terminal Device, and Non-Transitory Computer-Readable Storage Medium | |
US9535713B2 (en) | Manipulating rules for adding new devices | |
CN108255434B (zh) | 标签管理方法、管理装置及计算机可读存储介质 | |
CN113297267A (zh) | 数据缓存和任务处理方法、装置、设备以及存储介质 | |
CN105144073A (zh) | 可移除存储设备身份和配置信息 | |
CN113127430A (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN113486025B (zh) | 数据存储方法、数据查询方法及装置 | |
CN117435569A (zh) | 缓存系统动态扩容方法、装置、设备、介质和程序产品 | |
CN105635236A (zh) | 一种页面呈现方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181212 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Patentee after: Zhuhai Leopard Technology Co.,Ltd. Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing Patentee before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd. |
|
TR01 | Transfer of patent right |