專利名稱:一種多核瀏覽器中進程復(fù)用的方法及其多核瀏覽器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種在多核瀏覽器中進程復(fù)用的方法及其多核瀏覽器。
背景技術(shù):
現(xiàn)代瀏覽器為了解決瀏覽器資源在長時間使用后不能很好地釋放和安全性問題, 大多數(shù)都使用了多進程模型。但是用戶的計算機硬件資源是有限的,為了讓瀏覽器在不同用戶計算機硬件配置下都能有較好的上網(wǎng)瀏覽器體驗,所以需要限制瀏覽器打開的進程的數(shù)量,防止出現(xiàn)類似操作系統(tǒng)中系統(tǒng)抖動的現(xiàn)象出現(xiàn)。這就產(chǎn)生了瀏覽器進程復(fù)用模型。
例如谷歌的Chrome (全稱Google Chrome,是由谷歌公司開發(fā)的一款Web瀏覽工具)瀏覽器、世界之窗瀏覽器等都是用了多進程模型。同時存在混合模型用于用戶在瀏覽器中瀏覽Web頁面時分配特定的工作(渲染)進程或線程。
在谷歌Chrome瀏覽器實現(xiàn)中使用了多進程模型。該模型在瀏覽器產(chǎn)生瀏覽器支持擴展解壓、安裝時使用獨立的工作進程;在瀏覽器瀏覽網(wǎng)頁需要渲染時,根據(jù)頁面需要的安全權(quán)限使用了獨立的渲染進程進行頁面內(nèi)容解析及渲染;在擴展和擴展所需的插件運行時,為需要不同權(quán)限的擴展和插件使用獨立的擴展或插件進程;瀏覽器還為瀏覽器提示信息的內(nèi)部頁面分配了不同的進程。
由于谷歌Chrome瀏覽器原生只支持Webkit (WebKit是蘋果Mac OS X系統(tǒng)引擎框架版本的名稱,主要用于Safari, Dashboard, Mail和其他一些Mac OS X程序內(nèi)核),所以在用戶瀏覽不支持Webkit或者說需要IE (Trident) (IE Internet Explorer,互聯(lián)網(wǎng)探索器;Trident,又稱為MSHTML,為Internet Explorer的排版引擎的名稱)內(nèi)核特性的頁面渲染時,用戶就不能使用谷歌Chrome瀏覽器進行瀏覽。此時谷歌的進程復(fù)用模型也不再適用。另一方面在于谷歌Chrome自身的安全模型設(shè)計(主要是沙箱設(shè)計)與IE內(nèi)核需要的系統(tǒng)安全權(quán)限可能存在沖突,可能導(dǎo)致直接使用Chrome的進程復(fù)用模型不能很好地,甚至是不能正常展現(xiàn)Web頁面。
但是對于多內(nèi)核瀏覽器下的進程復(fù)用目前還沒有解決的方案。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于,提供一種在多核瀏覽器中實現(xiàn)進程復(fù)用的方案。
為解決上述技術(shù)問題,本發(fā)明的一方面,提供一種多核瀏覽器中進程復(fù)用的方法, 包括預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,本方法還可以包括如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核還可以包括基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
根據(jù)本發(fā)明的實施例,所述預(yù)設(shè)瀏覽器側(cè)的瀏覽器最大進程數(shù)步驟還可以包括, 依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù);
根據(jù)本發(fā)明的實施例,所述硬件資源狀況還可以包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
根據(jù)本發(fā)明的實施例,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟還可以包括分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟還可以包括,對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon權(quán)限;訪問上下文菜單權(quán)限;訪問cookie 權(quán)限;訪問chrome, experimental. *接口權(quán)限;訪問geolocation接口權(quán)限;訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問chrome, management模塊提供的接口權(quán)限;訪問HTML5notifiCationS接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web存儲能力權(quán)限。
根據(jù)本發(fā)明的實施例,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟還可以包括如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟還可以包括如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟還可以包括如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
根據(jù)本發(fā)明的實施例,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟還可以進一步包括核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
根據(jù)本發(fā)明的另一方面,一種進程復(fù)用的多核瀏覽器,包括預(yù)設(shè)最大進程數(shù)模塊用于預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);內(nèi)核確定模塊用于在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;判斷進程數(shù)模塊用于判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);查找進程模塊用于查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;核實進程權(quán)限模塊用于核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;打開網(wǎng)頁模塊用于使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述瀏覽器還可以包括,新建進程模塊用于如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述內(nèi)核確定模塊還可以用于基于被請求的網(wǎng)頁的網(wǎng)址 URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
根據(jù)本發(fā)明的實施例,所述預(yù)設(shè)最大進程數(shù)模塊還可以用于,依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù);
根據(jù)本發(fā)明的實施例,所述硬件資源狀況可以包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
根據(jù)本發(fā)明的實施例,所述核實進程權(quán)限模塊還可以用于,分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述核實進程權(quán)限模塊還可以用于,對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon 權(quán)限;訪問上下文菜單權(quán)限;訪問cookie權(quán)限;訪問chrome, experimental. *接口權(quán)限;訪問geolocation接口權(quán)限;訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問chrome, management模塊提供的接口權(quán)限;訪問HTML5notifications接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web存儲能力權(quán)限。
根據(jù)本發(fā)明的實施例,所述打開網(wǎng)頁模塊還可以用于,如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述打開網(wǎng)頁模塊還可以用于,如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
根據(jù)本發(fā)明的實施例,所述打開網(wǎng)頁模塊還可以用于,如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
根據(jù)本發(fā)明的實施例,所述核實進程權(quán)限模塊還可以用于核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
根據(jù)本發(fā)明實施例,通過在多核瀏覽器的內(nèi)核中確定一適配渲染該請求網(wǎng)頁的瀏覽器內(nèi)核;判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);就可以確定進行進程的復(fù)用了, 并查找到所述已有進程中的是所述確定的適配瀏覽器內(nèi)核的進程,核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。這樣就可以保證多核瀏覽器的進程復(fù)用中的安全性,對于被打開的網(wǎng)頁使其在復(fù)用進程中打開時都是核實過其網(wǎng)頁權(quán)限和進程權(quán)限的,而且也實現(xiàn)了對于多內(nèi)核瀏覽器情況下的進程的復(fù)用。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖I示出了根據(jù)本發(fā)明實施例所述的一種多核瀏覽器中進程復(fù)用的方法流程圖2示出了根據(jù)本發(fā)明實施例所述的一種進程復(fù)用的多核瀏覽器結(jié)構(gòu)框圖3示出了根據(jù)本發(fā)明實施例的一種多核瀏覽器中實現(xiàn)進程復(fù)用的方法中的進程及線程結(jié)構(gòu)圖4示出了圖3中進程310的線程構(gòu)成的渲染線程池310C結(jié)構(gòu)圖5示出了根據(jù)本發(fā)明實施例所述的一種多核瀏覽器中進程復(fù)用的方法的一個實施例流程圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
如圖I所示,為根據(jù)本發(fā)明實施例所述的一種多核瀏覽器中進程復(fù)用的方法流程圖,包括以下步驟
步驟101 :預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);
例如例1,依據(jù)用戶的選擇預(yù)設(shè)瀏覽器測的最大進程數(shù)為10個;
優(yōu)選的,步驟101還可以包括依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù);優(yōu)選的,步驟101所述硬件資源狀況包括CPU性能、 或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
例如例2,偵測到運行瀏覽器的計算機性能狀況為CPU :Intel Core i7,主頻2.8GHz顯卡性能=NVIDIA GeForce GTX 680M SLI核心頻率720MHz內(nèi)存4GB,依據(jù)此計算機的性能,確定瀏覽器最大進程數(shù)為10個。
步驟102 :在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;
例如續(xù)前述例1,當(dāng)用戶在一個用IE內(nèi)核渲染的頁面中,點擊一個地址鏈接 hao. 360. cn,本方法確定IE內(nèi)核為適配該網(wǎng)頁請求的第一瀏覽器內(nèi)核。
優(yōu)選的,步驟102還可以包括,基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
例如續(xù)前述例2,在瀏覽器側(cè)已經(jīng)收集了大量用戶對于特定網(wǎng)址對特定瀏覽器內(nèi)核的依賴情況信息,以其構(gòu)成網(wǎng)址與瀏覽器渲染內(nèi)核的映射表,表中“WWW. gmail. com”與 “chrome瀏覽器內(nèi)核”相映射,當(dāng)用戶點擊一個網(wǎng)址www. gmail. com時,本方法確定chrome 瀏覽器內(nèi)核為適配該網(wǎng)頁請求的第一瀏覽器內(nèi)核。
步驟103 :判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);優(yōu)選的,步驟103還包括, 如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
例如續(xù)前述例2 :瀏覽器最大進程數(shù)為10,如果當(dāng)前瀏覽器已有進程為10,則進行步驟104及其以后的步驟;例如例3 :如果當(dāng)前瀏覽器的已有進程為6,小于瀏覽器最大進程數(shù)10,針對網(wǎng)址WWW. gmail. com,則新建一個使用chrome瀏覽器內(nèi)核的進行渲染的進程, 打開 www. gmail. com。
步驟104 :查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;
例如續(xù)前述例2 :瀏覽器最大進程數(shù)為10,當(dāng)前瀏覽器已有10個進程,本方法查找到其中7個進程使用chrome瀏覽器內(nèi)核即第一瀏覽器內(nèi)核進行渲染。
步驟105 :核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;
優(yōu)選的,步驟105還可以包括分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
優(yōu)選的,步驟105還可以包括對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon權(quán)限;訪問上下文菜單權(quán)限; 訪問 cookie 權(quán)限;訪問 chrome, experimental. * 接口權(quán)限;訪問 geolocation 接口權(quán)限; 訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問chrome, management模塊提供的接口權(quán)限;訪問HTML5notifiCationS接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web 存儲能力權(quán)限。
例如續(xù)前述例2 :打開所述www. gmail. com需要后臺運行權(quán)限、訪問cookie權(quán)限, 對已找到的7個使用chrome瀏覽器內(nèi)核進的進程進行逐一枚舉,其中進程A、進程B都有后臺運行權(quán)限、訪問cookie權(quán)限。
優(yōu)選的,步驟105還可以包括核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
例如續(xù)前述例2 :若進程B的所有線程處于繁忙狀態(tài),則通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,例如進程A。
步驟106 :使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
例如續(xù)前述例2,用進程A中的頁面線程打開所述網(wǎng)頁。
優(yōu)選的,步驟106還可以包括,如果所述第一瀏覽器內(nèi)核為ChiOme瀏覽器的內(nèi)核, 在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
例如續(xù)前述例2,如果進程A中有3個頁面線程,將對所述www. gmail. com的瀏覽請求及在其之后的瀏覽請求排隊,待進程A中的3個頁面線程中的一個進入空閑狀態(tài),則以此空閑的線程響應(yīng)所述隊列中的瀏覽網(wǎng)頁請求。
優(yōu)選的,步驟106還可以包括如果所述第一瀏覽器內(nèi)核為ChiOme瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
例如續(xù)前述例2,如果進程A中有3個頁面線程,并正都處繁忙狀態(tài),則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程(例如,進程B),打開所述www. gmail. com網(wǎng)頁。
優(yōu)選的,步驟106還可以包括如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
例如續(xù)前述例1,已確定用IE瀏覽器內(nèi)核作為第一瀏覽器打開所述hao. 360. cn/ 網(wǎng)頁,本方法查找到進程C使用IE瀏覽器內(nèi)核即第一瀏覽器內(nèi)核進行渲染,進程C中的各線程都處于繁忙狀態(tài),則在進程C中新建一個頁面線程,打開hao. 360. cn/網(wǎng)頁,在所述 hao. 360. cn網(wǎng)頁關(guān)閉后,銷毀所述新建的線程。
如圖2所示,為根據(jù)本發(fā)明實施例所述的一種進程復(fù)用的多核瀏覽器200結(jié)構(gòu)框圖,包括以下模塊
預(yù)設(shè)最大進程數(shù)模塊201 :用于預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);優(yōu)選的,預(yù)設(shè)最大進程數(shù)模塊201還可以用于,依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù);優(yōu)選的,所述硬件資源狀況包括=CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
內(nèi)核確定模塊202 :用于在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;優(yōu)選的,內(nèi)核確定模塊202還可以用于,基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
判斷進程數(shù)模塊203 :用于判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);
查找進程模塊204 :用于查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;
核實進程權(quán)限模塊205 :用于核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;
優(yōu)選的,核實進程權(quán)限模塊205還可以用于分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
優(yōu)選的,核實進程權(quán)限模塊205還可以用于對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon權(quán)限;訪問上下文菜單權(quán)限;訪問cookie權(quán)限;訪問chrome, experimental. *接口權(quán)限;訪問 geolocation接口權(quán)限;訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問 chrome, management模塊提供的接口權(quán)限;訪問HTML5 notifications接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web存儲能力權(quán)限。
優(yōu)選的,核實進程權(quán)限模塊205還可以用于核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
打開網(wǎng)頁模塊206 :用于使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
優(yōu)選的,打開網(wǎng)頁模塊206還可以用于如果所述第一瀏覽器內(nèi)核為ChiOme瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
優(yōu)選的,打開網(wǎng)頁模塊206還可以用于如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
優(yōu)選的,打開網(wǎng)頁模塊206還可以用于如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
優(yōu)選的,本瀏覽器還可以包括新建進程模塊用于如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
如圖3,為根據(jù)本發(fā)明實施例的一種多核瀏覽器中實現(xiàn)進程復(fù)用的方法中的進程及線程結(jié)構(gòu)圖。如圖所示,主進程300包括進程310、進程320、進程330 ;進程310包括線程311、線程312、線程313 ;進程320包括線程321、線程322、線程323。
如圖4,為如圖3中進程310的線程構(gòu)成的渲染線程池310C結(jié)構(gòu)圖。如圖所示渲染線程池310C包括線程311、線程312、線程313,以及后續(xù)在應(yīng)用下述方案3時新建的線程 314。
依據(jù)本方法,預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù)為3;在瀏覽器側(cè)發(fā)起對網(wǎng)頁www.gmail. com的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定chrome瀏覽器內(nèi)核為適配渲染該請求網(wǎng)頁謂.gmail. com的第一瀏覽器內(nèi)核;判斷當(dāng)前已有進程數(shù)3已達到所述最大進程數(shù)3;查找到所述已有進程中進程310使用chrome瀏覽器內(nèi)核進行渲染的進程;核實所述查找到的進程310的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致;使用權(quán)限相一致的所述進程310 中的頁面線程打開所述網(wǎng)頁的具體步驟如下
用進程310中的頁面線程打開所述網(wǎng)頁??蛇x擇下述方案
方案I :如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
例如進程310中有3個頁面線程311 313,將對所述www. gmail. com的瀏覽請求及在其之后的瀏覽請求排隊,此時若線程311進入空閑狀態(tài),則以此空閑的線程311響應(yīng)所述隊列中的瀏覽網(wǎng)頁請求。
方案2 :在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時, 則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
例如進程310中有3個頁面線程31廣313,并正都處繁忙狀態(tài),則通知瀏覽器主進程300查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程(例如,進程320),打開所述www. gmail. com網(wǎng)頁。
另一種情況是,若所述第一瀏覽器內(nèi)核為Trident(IE)內(nèi)核,查找到所述已有進程中進程310使用Trident (IE)內(nèi)核進行渲染的進程;可選擇采用上述方案2打開網(wǎng)頁,但不可采用上述方案I打開網(wǎng)頁,而可選擇采用下述方案3打開網(wǎng)頁
方案3 :如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
例如進程310的各線程31 f 313處于繁忙狀態(tài),則在進程310中新建線程314,打開所述WWW. gmail. com網(wǎng)頁,并在所述www. gmail. com被關(guān)閉后,銷毀所述新建的線程314。
另一種情況是,無論所述第一瀏覽器內(nèi)核為何種類型,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,進一步包括核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
例如,核實進程310、進程320都為第一瀏覽器內(nèi)核,310的權(quán)限與打開網(wǎng)頁www. gmail. com的所需權(quán)限一致,并進一步核實到進程310的各線程都處于繁忙狀態(tài);通知瀏覽器主進程300去核實進程320的權(quán)限與打開網(wǎng)頁www. gmail. com所需權(quán)限是否一致并且進程320中是否有空閑線程,若是,則使用進程320打開所述www. gmail. com網(wǎng)頁。
如圖5 :為根據(jù)本發(fā)明實施例所述的一種多核瀏覽器中進程復(fù)用的方法的一個實施例流程圖,包括以下步驟
步驟501 :根據(jù)用戶本地的switcher數(shù)據(jù)和后臺數(shù)據(jù)判斷用戶瀏覽所述網(wǎng)頁的內(nèi)核類型switcher是根據(jù)通過分析大量的用戶反饋后,記錄的對于某些特定網(wǎng)站或者網(wǎng)頁,由于頁面的html代碼或依賴特殊的插件(或控件)需要使用Trident內(nèi)核才能正常顯示或者正常工作的數(shù)據(jù),例如某網(wǎng)站網(wǎng)購時的支付頁面能夠成功須采用Trident內(nèi)核瀏覽器。若須使用Trident內(nèi)核,則在執(zhí)行步驟502后,執(zhí)行步驟523 步驟530 ;若須使用 Webkit內(nèi)核,則在執(zhí)行步驟502后,執(zhí)行步驟503 步驟510 ;
步驟502 :根據(jù)用戶硬件系統(tǒng)判斷合適的瀏覽器最大進程數(shù);
步驟503 :依據(jù)前述步驟,若判斷須使用Webkit內(nèi)核,開始執(zhí)行步驟503 步驟 510。判斷當(dāng)前已有瀏覽器進程數(shù)是否已達到所述瀏覽器最大進程數(shù);如果所述已有進程數(shù)已達到所述最大進程數(shù),執(zhí)行步驟504 ;若否,執(zhí)行步驟510 ;
步驟504 :枚舉使用Webkit內(nèi)核的渲染進程;所謂枚舉,即逐個查找,當(dāng)找到一個使用Webkit內(nèi)核的渲染進程,執(zhí)行后續(xù)步驟505 ;
步驟505 :判斷是否枚舉完所有使用Webkit內(nèi)核的渲染進程;如果枚舉完所有使用Webkit內(nèi)核的渲染進程,則執(zhí)行步驟510 ;若否,則執(zhí)行步驟506 ;
步驟506 :核實該進程的權(quán)限;即核實找到的使用Webkit內(nèi)核的渲染進程的權(quán)限;
步驟507 :核實該進程的權(quán)限是否與打開所述新網(wǎng)頁所需的權(quán)限匹配;若不匹配, 則轉(zhuǎn)步驟504枚舉另一個使用Webkit內(nèi)核的渲染進程;若匹配,則執(zhí)行步驟508 ;
步驟508 :核實該進程的線程數(shù)是否已經(jīng)達到最大容許線程數(shù);若是;則轉(zhuǎn)步驟 504枚舉另一個使用Webkit內(nèi)核的渲染進程;若否,執(zhí)行步驟509 ;
步驟509 :通知找到的進程,發(fā)起新的頁面瀏覽過程;即用經(jīng)過前述步驟508查找到的符合要求的進程打開頁面;
步驟510 :新建一個使用Webkit內(nèi)核的渲染進程并發(fā)起瀏覽網(wǎng)頁過程。依據(jù)前述步驟,在兩種情況下執(zhí)行步驟510,一,在步驟503中判斷當(dāng)前瀏覽器進程數(shù)尚未達到瀏覽器最大進程數(shù)時,執(zhí)行步驟510 ;二,在步驟505中,判斷所有使用Webkit內(nèi)核的渲染進程枚舉完畢,但未找到可用進程時,執(zhí)行步驟510。
步驟523 步驟530 :在步驟501中,若根據(jù)用戶本地的switcher數(shù)據(jù)和后臺數(shù)據(jù)判斷用戶瀏覽所述網(wǎng)頁的內(nèi)核類型為Trident(IE)內(nèi)核,則在執(zhí)行步驟502后,執(zhí)行步驟523 步驟530。步驟523 步驟530與前述步驟503 步驟510相對應(yīng),區(qū)別是對采用 Trident (IE)內(nèi)核的進程進行相應(yīng)步驟。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。 各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此, 遵循具體實施方式
的權(quán)利要求書由此明確地并入該具體實施方式
,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的圖2設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中, 不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本文公開了 Al、一種多核瀏覽器中進程復(fù)用的方法,包括預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。A2、如 Al所述方法,其特征在于,還包括如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。A3、如Al所述方法,其特征在于,所述在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核包括 基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表; 從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。A4、如Al所述方法,其特征在于,所述預(yù)設(shè)瀏覽器側(cè)的瀏覽器最大進程數(shù)步驟, 依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù)。 A5、如A4所述方法,其特征在于,所述硬件資源狀況包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。A6jnAl所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,包括分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。A7、如Al所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,包括對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon權(quán)限;訪問上下文菜單權(quán)限;訪問cookie權(quán)限;訪問chrome, experimental. *接口權(quán)限;訪問geolocation 接口權(quán)限;訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問chrome, management模塊提供的接口權(quán)限;訪問HTML5 notifications接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web存儲能力權(quán)限。AS、如Al所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。A9、如Al所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。A10、如Al所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。AU、如Al所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,進一步包括核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
本文公開了 B12、一種進程復(fù)用的多核瀏覽器,包括預(yù)設(shè)最大進程數(shù)模塊,用于預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);內(nèi)核確定模塊,用于在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;判斷進程數(shù)模塊,用于判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);查找進程模塊,用于查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;核實進程權(quán)限模塊,用于核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;打開網(wǎng)頁模塊,用于使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。B13、如B12所述瀏覽器,其特征在于,還包括新建進程模塊,用于如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。B14、如B12所述瀏覽器,其特征在于,所述內(nèi)核確定模塊用于基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。B15、如B 12所述瀏覽器,其特征在于,所述預(yù)設(shè)最大進程數(shù)模塊用于, 依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù)。 B16、如B15所述瀏覽器,其特征在于,所述硬件資源狀況包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。B17、如B12所述瀏覽器,其特征在于,所述核實進程權(quán)限模塊用于,分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。B18、如B 12所述瀏覽器,其特征在于,所述核實進程權(quán)限模塊用于,對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實后臺運行權(quán)限;訪問書簽權(quán)限;訪問chrome://favicon權(quán)限;訪問上下文菜單權(quán)限;訪問cookie權(quán)限;訪問chrome, experimental. *接口權(quán)限;訪問geolocation 接口權(quán)限;訪問歷史記錄權(quán)限;訪問chrome, idle模塊提供的接口權(quán)限;訪問chrome, management模塊提供的接口權(quán)限;訪問HTML5 notifications接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限;無限Web存儲能力權(quán)限。B19、如B12所述瀏覽器,其特征在于,所述打開網(wǎng)頁模塊用于,如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。B20、如B12所述瀏覽器,其特征在于,所述打開網(wǎng)頁模塊用于,如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。B21、如B12所述瀏覽器,其特征在于,所述打開網(wǎng)頁模塊用于,如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。B22、如B12所述瀏覽器,其特征在于,所述核實進程權(quán)限模塊用于核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài);通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
權(quán)利要求
1.一種多核瀏覽器中進程復(fù)用的方法,包括 預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù); 在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核; 判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù); 查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程; 核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致; 使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
2.如權(quán)利要求I所述方法,其特征在于,還包括 如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
3.如權(quán)利要求I所述方法,其特征在于,所述在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核包括 基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表; 從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
4.如權(quán)利要求I所述方法,其特征在于,所述預(yù)設(shè)瀏覽器側(cè)的瀏覽器最大進程數(shù)步驟,依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù)。
5.如權(quán)利要求4所述方法,其特征在于,所述硬件資源狀況包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
6.如權(quán)利要求I所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,包括分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
7.如權(quán)利要求I所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,包括對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實 后臺運行權(quán)限; 訪問書簽權(quán)限; 訪問 chrome://favicon 權(quán)限; 訪問上下文菜單權(quán)限; 訪問cookie權(quán)限; 訪問 chrome, experimental. * 接口權(quán)限; 訪問geolocation接口權(quán)限; 訪問歷史記錄權(quán)限; 訪問chrome, idle模塊提供的接口權(quán)限; 訪問chrome, management模塊提供的接口權(quán)限; 訪問HTML5notif ications接口支持權(quán)限;訪問標(biāo)簽頁權(quán)限; 無限Web存儲能力權(quán)限。
8.如權(quán)利要求I所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括 如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
9.如權(quán)利要求I所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括 如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
10.如權(quán)利要求I所述方法,其特征在于,所述使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁步驟,包括 如果所述第一瀏覽器內(nèi)核為IE內(nèi)核,且所述進程中的各線程都處于繁忙狀態(tài),則在所述進程中新建線程,打開所述網(wǎng)頁,并在所述新線程打開所述網(wǎng)頁后在被關(guān)閉時再銷毀所述該新建的線程。
11.如權(quán)利要求I所述方法,其特征在于,所述核實查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致步驟,進一步包括 核實到被查找到的一瀏覽器進程中的各線程都處于繁忙狀態(tài); 通知瀏覽器的主進程去核實所述查找到的其他進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致且所述進程中有處于空閑狀態(tài)的線程,以便在瀏覽器進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致的其他瀏覽器進程中打開所述網(wǎng)頁。
12.—種進程復(fù)用的多核瀏覽器,包括 預(yù)設(shè)最大進程數(shù)模塊,用于預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù); 內(nèi)核確定模塊,用于在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核; 判斷進程數(shù)模塊,用于判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù); 查找進程模塊,用于查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程; 核實進程權(quán)限模塊,用于核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致; 打開網(wǎng)頁模塊,用于使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
13.如權(quán)利要求12所述瀏覽器,其特征在于,還包括 新建進程模塊,用于如果判斷當(dāng)前已有進程數(shù)未達到所述瀏覽器側(cè)最大進程數(shù)時,新建一個使用第一瀏覽器內(nèi)核的進程,打開所述網(wǎng)頁。
14.如權(quán)利要求12所述瀏覽器,其特征在于,所述內(nèi)核確定模塊用于 基于被請求的網(wǎng)頁的網(wǎng)址URL,查詢在瀏覽器側(cè)的網(wǎng)址與瀏覽器渲染內(nèi)核之間的映射表;從所述的多個瀏覽器內(nèi)核中確定與被請求的網(wǎng)頁的網(wǎng)址相適配的瀏覽器內(nèi)核進行所述網(wǎng)頁的渲染。
15.如權(quán)利要求12所述瀏覽器,其特征在于,所述預(yù)設(shè)最大進程數(shù)模塊用于,依據(jù)運行所述瀏覽器的本地計算設(shè)備的硬件資源狀況設(shè)定瀏覽器側(cè)的瀏覽器最大進程數(shù)。
16.如權(quán)利要求15所述瀏覽器,其特征在于,所述硬件資源狀況包括CPU性能、或顯卡性能、或內(nèi)存性能、或任何前述兩者或三者的組合、或由任何前述兩者或三者以預(yù)定規(guī)則得到的綜合性能指數(shù)。
17.如權(quán)利要求12所述瀏覽器,其特征在于,所述核實進程權(quán)限模塊用于,分別枚舉各所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程,當(dāng)被枚舉的所述進程的權(quán)限與打開所述網(wǎng)頁所需的權(quán)限一致時,使用所述進程中的頁面線程打開所述網(wǎng)頁。
18.如權(quán)利要求12所述瀏覽器,其特征在于,所述核實進程權(quán)限模塊用于,對以下任一權(quán)限或任何其中若干權(quán)限的組合進行核實 后臺運行權(quán)限; 訪問書簽權(quán)限; 訪問 chrome://favicon 權(quán)限; 訪問上下文菜單權(quán)限; 訪問cookie權(quán)限; 訪問 chrome, experimental. * 接口權(quán)限; 訪問geolocation接口權(quán)限; 訪問歷史記錄權(quán)限; 訪問chrome, idle模塊提供的接口權(quán)限; 訪問chrome, management模塊提供的接口權(quán)限; 訪問HTML5notifications接口支持權(quán)限; 訪問標(biāo)簽頁權(quán)限; 無限Web存儲能力權(quán)限。
19.如權(quán)利要求12所述瀏覽器,其特征在于,所述打開網(wǎng)頁模塊用于, 如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程中對網(wǎng)頁的瀏覽請求進行排隊,逐一等待所述線程池中的由繁忙狀態(tài)轉(zhuǎn)為空閑狀態(tài)的線程打開所述網(wǎng)頁。
20.如權(quán)利要求12所述瀏覽器,其特征在于,所述打開網(wǎng)頁模塊用于, 如果所述第一瀏覽器內(nèi)核為Chrome瀏覽器的內(nèi)核,在所述使用權(quán)限相一致的進程的線程池中的各線程都處于繁忙狀態(tài)時,則通知瀏覽器主進程查找其他已有瀏覽器進程,確定另一個瀏覽器內(nèi)核類型及權(quán)限與打開所述新網(wǎng)頁所需瀏覽器內(nèi)核類型及權(quán)限相一致的已有進程,打開所述網(wǎng)頁。
全文摘要
本發(fā)明公開了一種多核瀏覽器中進程復(fù)用的方法及其多核瀏覽器。本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及進程復(fù)用的方法及進程復(fù)用的多核瀏覽器。本發(fā)明要解決的問題是,根據(jù)已經(jīng)存在的渲染進程的權(quán)限分配渲染進程,同時能直接使用到Chrome模型中。所述方法包括預(yù)設(shè)瀏覽器側(cè)的最大進程數(shù);在瀏覽器側(cè)發(fā)起對網(wǎng)頁的瀏覽請求,在所述多個瀏覽器內(nèi)核中確定一適配渲染該請求網(wǎng)頁的第一瀏覽器內(nèi)核;判斷當(dāng)前已有進程數(shù)已達到所述最大進程數(shù);查找到所述已有進程中使用第一瀏覽器內(nèi)核進行渲染的進程;核實所述查找到的進程的權(quán)限是否與打開所述網(wǎng)頁所需的權(quán)限一致;使用權(quán)限相一致的所述進程中的頁面線程打開所述網(wǎng)頁。
文檔編號G06F21/44GK102981903SQ20121052967
公開日2013年3月20日 申請日期2012年12月10日 優(yōu)先權(quán)日2012年12月10日
發(fā)明者曹龍, 任寰 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司