一種瀏覽器中進(jìn)程間通信的方法、裝置和瀏覽器的制造方法
【專利摘要】本發(fā)明公開了一種瀏覽器中進(jìn)程間通信的方法、裝置以及瀏覽器,所述方法包括:采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載;采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令;通過所述第一I/O線程將所述操作指令發(fā)送至所述第二I/O線程中;采用所述第二I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中;采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染;通過所述第二I/O線程將渲染后的網(wǎng)頁發(fā)送至所述第一I/O線程中;采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。本發(fā)明提高了網(wǎng)頁的加載速度和效率。
【專利說明】—種瀏覽器中進(jìn)程間通信的方法、裝置和瀏覽器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及瀏覽器的【技術(shù)領(lǐng)域】,特別是涉及一種瀏覽器中進(jìn)程間通信的方法、一種瀏覽器中進(jìn)程間通信的裝置和一種瀏覽器。
【背景技術(shù)】
[0002]瀏覽器從架構(gòu)上可以分為兩個(gè)部分,即內(nèi)核和外殼。瀏覽器內(nèi)核是指瀏覽器的核心部分,可以分成兩部分:渲染引擎(layout engineer或者Rendering Engine)和JS(JavaScript)引擎。渲染引擎主要負(fù)責(zé)取得網(wǎng)頁的內(nèi)容(包括HTML、XML、圖像等)、整理信息(如加入CSS (Cascading Style Sheets,層疊樣式表單)等),以及計(jì)算網(wǎng)頁的顯示方式,然后會(huì)輸出至顯示器或打印機(jī)。瀏覽器內(nèi)核的不同對(duì)于網(wǎng)頁的語法解釋會(huì)有不同,所以渲染的效果也不相同。所有網(wǎng)頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核。JS引擎則是解析Javascript語言,執(zhí)行Javascript語言來實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)效果。
[0003]瀏覽器內(nèi)核的種類有很多,目前比較常見的瀏覽器內(nèi)核有微軟的IE瀏覽器使用的Trident內(nèi)核,F(xiàn)irefox瀏覽器使用的Gecko內(nèi)核,蘋果的Safari瀏覽器和Google的Chrome瀏覽器使用的Webkit內(nèi)核,以及,Opera瀏覽器采用的Presto內(nèi)核。
[0004]當(dāng)用戶通過瀏覽器發(fā)起一個(gè)瀏覽網(wǎng)頁的請(qǐng)求時(shí),瀏覽器通過內(nèi)核從目標(biāo)網(wǎng)站下載網(wǎng)頁的內(nèi)容,然后分析網(wǎng)頁內(nèi)容,執(zhí)行腳本,計(jì)算排版,最后輸出到顯示器顯示給用戶。每個(gè)瀏覽器具有一個(gè)內(nèi)核,不管用戶通過一個(gè)瀏覽器進(jìn)程打開多少個(gè)網(wǎng)頁,瀏覽器都使用同一個(gè)內(nèi)核解釋執(zhí)行。
[0005]但是,這種單內(nèi)核瀏覽器有很大的局限性,因?yàn)榫W(wǎng)頁往往是按照某個(gè)內(nèi)核支持的網(wǎng)絡(luò)標(biāo)準(zhǔn)制作的,對(duì)于某個(gè)特定內(nèi)核支持的網(wǎng)絡(luò)標(biāo)準(zhǔn),其他內(nèi)核可能無法很好地支持(甚至無法支持)。例如,用戶使用Firefox瀏覽器瀏覽網(wǎng)頁,F(xiàn)irefox瀏覽器的內(nèi)核能夠很好地支持W3C標(biāo)準(zhǔn),因此使用該瀏覽器可以瀏覽按照W3C標(biāo)準(zhǔn)制作的網(wǎng)頁。但如果用戶想要瀏覽招商銀行網(wǎng)頁使用網(wǎng)絡(luò)銀行,F(xiàn)irefox瀏覽器就無法滿足這個(gè)用戶需求。因?yàn)檎猩蹄y行網(wǎng)站的網(wǎng)絡(luò)銀行功能需要ActiveX插件功能,而該功能可能只有IE的內(nèi)核才能支持,這樣用戶在使用Firefox瀏覽器的情況下就無法使用招商銀行的網(wǎng)絡(luò)銀行功能了。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種進(jìn)行網(wǎng)頁加載的方法和相應(yīng)的一種進(jìn)行網(wǎng)頁加載的裝置,以及一種瀏覽器。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供了一種瀏覽器中進(jìn)程間通信的方法,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/O線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/O線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述方法包括:
[0008]采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載;
[0009]采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令;
[0010]通過所述第一 I/O線程將所述操作指令發(fā)送至所述第二 I/O線程中;
[0011]采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中;
[0012]采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染;
[0013]通過所述第二 I/O線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中;
[0014]采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
[0015]可選地,所述采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令的步驟包括:
[0016]采用所述第一 I/O線程接收到觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令。
[0017]可選地,所述操作指令中包括第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí);
[0018]所述采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中的步驟包括:
[0019]提取所述操作指令中的第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí);
[0020]采用所述第二 I/O線程采用系統(tǒng)消息循環(huán)指令將所述操作指令發(fā)送至所述第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)對(duì)應(yīng)的標(biāo)簽頁面子線程中。
[0021]可選地,所述采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載的步驟:
[0022]在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核進(jìn)程;
[0023]當(dāng)查找到時(shí),判定匹配的瀏覽器內(nèi)核進(jìn)程為第二瀏覽器內(nèi)核進(jìn)程。
[0024]可選地,所述在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核的步驟包括:
[0025]在預(yù)置的白名單中查找與當(dāng)前網(wǎng)頁的URL適配的瀏覽器內(nèi)核進(jìn)程;
[0026]和/ 或,
[0027]在預(yù)置的黑名單中查找與當(dāng)前網(wǎng)頁的URL不適配的瀏覽器內(nèi)核進(jìn)程。
[0028]根據(jù)本發(fā)明的另一方面,提供了一種瀏覽器中進(jìn)程間通信的裝置,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/o線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/o線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述裝置包括:
[0029]適配內(nèi)核判定模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載;
[0030]操作指令接收模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令;
[0031]第一操作指令發(fā)送模塊,適于通過所述第一 I/O線程將所述操作指令發(fā)送至所述第二 I/o線程中;
[0032]第二操作指令發(fā)送模塊,適于采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中;[0033]渲染模塊,適于采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染;
[0034]網(wǎng)頁發(fā)送模塊,適于通過所述第二 I/O線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中;
[0035]網(wǎng)頁顯示模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
[0036]可選地,所述操作指令接收模塊還適于:
[0037]采用所述第一 I/O線程接收到觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令。
[0038]可選地,所述操作指令中包括第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí);
[0039]所述第二操作指令發(fā)送模塊還適于:
[0040]提取所述操作指令中的第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí);
[0041]采用所述第二 I/O線程采用系統(tǒng)消息循環(huán)指令將所述操作指令發(fā)送至所述第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)對(duì)應(yīng)的標(biāo)簽頁面子線程中。
[0042]可選地,所述適配內(nèi)核判定模塊還適于:
[0043]在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核進(jìn)程;
[0044]當(dāng)查找到時(shí),判定匹配的瀏覽器內(nèi)核為第二瀏覽器內(nèi)核進(jìn)程。
[0045]可選地,所述適配內(nèi)核判定模塊還適于:
[0046]在預(yù)置的白名單中查找與當(dāng)前網(wǎng)頁的URL適配的瀏覽器內(nèi)核進(jìn)程;
[0047]和/ 或,
[0048]在預(yù)置的黑名單中查找與當(dāng)前網(wǎng)頁的URL不適配的瀏覽器內(nèi)核進(jìn)程。
[0049]根據(jù)本發(fā)明的另一方面,提供了一種瀏覽器,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/o線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/o線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述瀏覽器包括:
[0050]適配內(nèi)核判定模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載;
[0051]操作指令接收模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令;
[0052]第一操作指令發(fā)送模塊,適于通過所述第一 I/O線程將所述操作指令發(fā)送至所述第二 I/o線程中;
[0053]第二操作指令發(fā)送模塊,適于采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中;
[0054]渲染模塊,適于采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染;
[0055]網(wǎng)頁發(fā)送模塊,適于通過所述第二 I/O線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中;
[0056]網(wǎng)頁顯示模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
[0057]本發(fā)明可以在判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載時(shí),使得瀏覽器的兩個(gè)瀏覽器內(nèi)核進(jìn)程進(jìn)行切換,可以使用第一瀏覽器內(nèi)核進(jìn)程的操作指令可以準(zhǔn)確而高效地轉(zhuǎn)達(dá)到指定的網(wǎng)頁的標(biāo)簽頁面子線程中進(jìn)行,實(shí)現(xiàn)網(wǎng)頁的正常渲染和加載,返回第一瀏覽器內(nèi)核進(jìn)程中進(jìn)行顯示,提高了網(wǎng)頁的加載速度和效率。
[0058]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說明】
[0059]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0060]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種瀏覽器中進(jìn)程間通信的方法實(shí)施例的步驟流程圖;以及,
[0061]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種瀏覽器中進(jìn)程間通信的裝置實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0062]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0063]參照?qǐng)D1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種瀏覽器中進(jìn)程間通信的方法實(shí)施例的步驟流程圖,其中,所述瀏覽器可以包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程可以包括第一 I/O (input/output,輸入/輸出)線程,所述第二瀏覽器內(nèi)核進(jìn)程包括可以第二 I/O線程、I/O信息分發(fā)線程和窗口線程,所述窗口線程可以包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,具體可以包括以下步驟:
[0064]步驟101,采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載;
[0065]需要說明的是,瀏覽器可以包括兩個(gè)或兩個(gè)以上的瀏覽器內(nèi)核,第一瀏覽器內(nèi)核可以為瀏覽器當(dāng)前默認(rèn)使用的瀏覽器內(nèi)核,該默認(rèn)的瀏覽器內(nèi)核可以是系統(tǒng)設(shè)置的,也可以使用戶設(shè)置的,具體可以是Webkit內(nèi)核等高性能的瀏覽器內(nèi)核。當(dāng)然,還可以是Gecko內(nèi)核、Presto內(nèi)核等等,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0066]第二瀏覽器內(nèi)核可以為瀏覽器內(nèi)置的除第一瀏覽器內(nèi)核外的其他瀏覽器內(nèi)核,可以在某些情況適配當(dāng)前網(wǎng)頁的加載,可以為Trident內(nèi)核(即IE內(nèi)核),包括IE-com內(nèi)核(兼容的IE內(nèi)核)和/或IE-stand內(nèi)核。當(dāng)然,還可以是Gecko內(nèi)核、Presto內(nèi)核等等,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0067]進(jìn)程(Process)是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ),可以是一個(gè)正在執(zhí)行的程序;可以是計(jì)算機(jī)中正在運(yùn)行的程序?qū)嵗豢梢允强梢苑峙浣o處理器并由處理器執(zhí)行的一個(gè)實(shí)體;可以是由單一順序的執(zhí)行顯示,一個(gè)當(dāng)前狀態(tài)和一組相關(guān)的系統(tǒng)資源所描述的活動(dòng)單元。
[0068]線程(thread),有時(shí)被稱為輕量級(jí)進(jìn)程(Lightweight Process, LWP),是程序執(zhí)行流的最小單元。線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。
[0069]一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程,同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。每一個(gè)程序都至少有一個(gè)線程,若程序只有一個(gè)線程,那就是程序本身。線程是程序中一個(gè)單一的順序控制流程。在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程。
[0070]IPC (Inter-Process Communication,進(jìn)程間通信),是進(jìn)程間通訊一種機(jī)制,操作系統(tǒng)的進(jìn)程和線程可以通過它交換數(shù)據(jù)和消息。
[0071]瀏覽器中,第一 I/O線程和第二 I/O線程可以用于數(shù)據(jù)的傳輸;窗口線程可以為瀏覽器的標(biāo)簽網(wǎng)頁(Tab page)進(jìn)行對(duì)應(yīng)的網(wǎng)頁處理,具體地,標(biāo)簽頁面子線程可以為對(duì)應(yīng)的網(wǎng)頁進(jìn)行網(wǎng)頁資源加載處理。
[0072]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述步驟101具體可以包括如下子步驟:
[0073]子步驟S11,在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核進(jìn)程;
[0074]在具體實(shí)現(xiàn)中,獲知用戶請(qǐng)求的網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系(即當(dāng)前網(wǎng)頁適于采用哪個(gè)瀏覽器內(nèi)核進(jìn)程進(jìn)行加載)的方法可以有多種。
[0075]其中一種方法,可以根據(jù)從請(qǐng)求信息獲得的內(nèi)容以及預(yù)置規(guī)則,獲知用戶請(qǐng)求的網(wǎng)頁與所述瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系。
[0076]具體而言,預(yù)置規(guī)則可以包括特定適配規(guī)則、通用適配規(guī)則和/或不適配規(guī)則,在請(qǐng)求加載網(wǎng)頁的過程中,可以根據(jù)特定適配規(guī)則、通用適配規(guī)則和/或不適配規(guī)則,獲知用戶請(qǐng)求的網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系。其中,特定適配規(guī)則可以包括網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系,通用適配規(guī)則可以包括為用戶選擇平均加載速度最快的瀏覽器內(nèi)核進(jìn)程或?yàn)橛脩暨x擇對(duì)網(wǎng)絡(luò)標(biāo)準(zhǔn)支持最好的瀏覽器內(nèi)核進(jìn)程,不適配規(guī)則可以包括網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的不適配關(guān)系。
[0077]由于瀏覽器還會(huì)根據(jù)接收到的加載請(qǐng)求向?qū)?yīng)的服務(wù)器發(fā)送關(guān)于加載網(wǎng)頁的加載請(qǐng)求信息,服務(wù)器會(huì)針對(duì)加載請(qǐng)求信息返回響應(yīng)信息,在響應(yīng)信息中會(huì)攜帶一些網(wǎng)頁的頁面內(nèi)容等信息,因此在此種情形下,還可以根據(jù)從服務(wù)器返回的針對(duì)加載請(qǐng)求信息的響應(yīng)信息獲得的內(nèi)容以及預(yù)置規(guī)則,重新獲知與用戶請(qǐng)求的網(wǎng)頁適配的瀏覽器內(nèi)核進(jìn)程;如果重新獲知的適配的瀏覽器內(nèi)核進(jìn)程與此前基于請(qǐng)求信息獲知的適配瀏覽器內(nèi)核進(jìn)程不同,則選擇重新獲知的適配瀏覽器內(nèi)核進(jìn)程加載用戶請(qǐng)求的網(wǎng)頁。
[0078]另外一種方法中,由于瀏覽器還會(huì)根據(jù)接收到的加載請(qǐng)求向?qū)?yīng)的服務(wù)器發(fā)送關(guān)于加載網(wǎng)頁的加載請(qǐng)求信息,服務(wù)器會(huì)針對(duì)加載請(qǐng)求信息返回響應(yīng)信息,在響應(yīng)信息中會(huì)攜帶一些網(wǎng)頁的頁面內(nèi)容等信息,因此在該方法中,可以直接根據(jù)從服務(wù)器返回的針對(duì)加載請(qǐng)求信息返回的響應(yīng)信息獲取的內(nèi)容以及預(yù)置規(guī)則,獲知用戶請(qǐng)求的網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系。
[0079]當(dāng)然,也可以根據(jù)從加載請(qǐng)求獲得的內(nèi)容、從服務(wù)器返回的針對(duì)加載請(qǐng)求信息返回的響應(yīng)信息獲取的內(nèi)容以及預(yù)置規(guī)則,共同獲知用戶請(qǐng)求的網(wǎng)頁與瀏覽器內(nèi)核進(jìn)程之間的適配關(guān)系。
[0080]另外,在使用上述各實(shí)施例提供的方法加載網(wǎng)頁時(shí),還可以對(duì)加載用戶請(qǐng)求的網(wǎng)頁的情況進(jìn)行檢測;如果出現(xiàn)符合預(yù)置的瀏覽器內(nèi)核進(jìn)程切換條件的現(xiàn)象,則根據(jù)預(yù)置規(guī)則重新獲知與該網(wǎng)頁適配的瀏覽器內(nèi)核進(jìn)程;選擇重新獲知的適配的瀏覽器內(nèi)核進(jìn)程加載用戶請(qǐng)求的網(wǎng)頁。其中,符合預(yù)置的瀏覽器內(nèi)核進(jìn)程切換條件的現(xiàn)象可以包括:在加載過程中檢測所加載速度較慢,或者在加載完畢后檢測到網(wǎng)頁沒有正常顯示,等等。
[0081]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述子步驟Sll進(jìn)一步可以包括如下子步驟:
[0082]子步驟S111,在預(yù)置的白名單中查找與當(dāng)前網(wǎng)頁的URL適配的瀏覽器內(nèi)核進(jìn)程;
[0083]和/ 或,
[0084]子步驟S112,在預(yù)置的黑名單中查找與當(dāng)前網(wǎng)頁的URL不適配的瀏覽器內(nèi)核進(jìn)程。
[0085]在具體實(shí)現(xiàn)中,白名單中可以記載特定適配規(guī)則和/或通用適配規(guī)則,黑名單中可以記載不適配規(guī)則。
[0086]子步驟S12,當(dāng)查找到時(shí),判定匹配的瀏覽器內(nèi)核進(jìn)程為第二瀏覽器內(nèi)核進(jìn)程。
[0087]當(dāng)在白名單中查找到當(dāng)前瀏覽器的瀏覽器內(nèi)核進(jìn)程時(shí),則可以判定該瀏覽器內(nèi)核進(jìn)程為第二瀏覽器內(nèi)核進(jìn)程;
[0088]當(dāng)在黑名單中查找到當(dāng)前瀏覽器的瀏覽器內(nèi)核進(jìn)程時(shí),則可以判定除該瀏覽器內(nèi)核進(jìn)程外的瀏覽器內(nèi)核進(jìn)程為第二瀏覽器內(nèi)核進(jìn)程。
[0089]步驟102,采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令;
[0090]操作指令可以為用戶進(jìn)行的網(wǎng)頁操作的具體指示,例如前進(jìn)、后退等等,具體可以包括操作名和/或操作參數(shù)。
[0091]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述步驟102具體可以包括如下子步驟:
[0092]子步驟S21,采用所述第一 I/O線程接收到觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令。
[0093]在具體實(shí)現(xiàn)中,第一瀏覽器內(nèi)核進(jìn)程可以采用第一 I/O線程接收操作指令。
[0094]步驟103,通過所述第一 I/O線程將所述操作指令發(fā)送至所述第二 I/O線程中;
[0095]當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)行加載,為提高網(wǎng)頁加載的效率,可以采用第二瀏覽器內(nèi)核進(jìn)程進(jìn)行加載,則需要獲取對(duì)應(yīng)的操作指。
[0096]步驟104,采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中;
[0097]當(dāng)?shù)诙?I/O線程獲取到操作指令賬號(hào),便可以發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程,用以進(jìn)行網(wǎng)頁資源的加載。
[0098]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述操作指令中可以包括第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)(Process ID)和標(biāo)簽頁面子線程標(biāo)識(shí)(Tab page ID);所述步驟104可以包括如下子步驟:
[0099]子步驟S31,提取所述操作指令中的第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí);
[0100]子步驟S32,采用所述第二 I/O線程采用系統(tǒng)消息循環(huán)指令將所述操作指令發(fā)送至所述第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)對(duì)應(yīng)的標(biāo)簽頁面子線程中。
[0101]第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)可以用于標(biāo)識(shí)第二瀏覽器內(nèi)核進(jìn)程,標(biāo)簽頁面子線程標(biāo)識(shí)可以用于標(biāo)識(shí)標(biāo)簽頁面子線程,第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)可以指示唯一的當(dāng)前頁面對(duì)應(yīng)的標(biāo)簽頁面子線程。[0102]系統(tǒng)消息循環(huán)指令(PostMessage)是Windows API (Application ProgrammingInterface,應(yīng)用程序編程接口)中的一個(gè)常用函數(shù),用于將一條消息放入到消息隊(duì)列中。該函數(shù)將一個(gè)消息放入(寄送)到與指定窗口創(chuàng)建的線程相聯(lián)系消息隊(duì)列里,不等待線程處理消息就返回,是異步消息模式。消息隊(duì)列里的消息通過調(diào)用GetMessage函數(shù)和PeekMessage函數(shù)取得。
[0103]本發(fā)明實(shí)施例中的消息處理函數(shù)位于第二 I/O線程中,需要將每個(gè)特定的操作指令重新轉(zhuǎn)發(fā),因?yàn)樗罱K接受到的操作指令還是在第二 I/o線程內(nèi)執(zhí)行,具體示例可以見下:
[0104]
【權(quán)利要求】
1.一種瀏覽器中進(jìn)程間通信的方法,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/o線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/O線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述方法包括: 采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載; 采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令; 通過所述第一 I/o線程將所述操作指令發(fā)送至所述第二 I/O線程中; 采用所述第二 I/o線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中; 采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染; 通過所述第二 I/o線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中; 采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
2.如權(quán)利要求1所述的方法,其特征在于,所述采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令的步驟包括: 采用所述第一 I/o線程接收到觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令。
3.如權(quán)利要求1所述的方法,其特征在于,所述操作指令中包括第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí); 所述采用所述第二 I/o線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中的步驟包括: 提取所述操作指令中的第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí); 采用所述第二 I/o線程采用系統(tǒng)消息循環(huán)指令將所述操作指令發(fā)送至所述第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)對(duì)應(yīng)的標(biāo)簽頁面子線程中。
4.如權(quán)利要求1所述的方法,其特征在于,所述采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載的步驟: 在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核進(jìn)程; 當(dāng)查找到時(shí),判定匹配的瀏覽器內(nèi)核進(jìn)程為第二瀏覽器內(nèi)核進(jìn)程。
5.如權(quán)利要求4所述的方法,其特征在于,所述在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核的步驟包括: 在預(yù)置的白名單中查找與當(dāng)前網(wǎng)頁的URL適配的瀏覽器內(nèi)核進(jìn)程; 和/或, 在預(yù)置的黑名單中查找與當(dāng)前網(wǎng)頁的URL不適配的瀏覽器內(nèi)核進(jìn)程。
6.一種瀏覽器中進(jìn)程間通信的裝置,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/O線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/O線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述裝置包括: 適配內(nèi)核判定模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載; 操作指令接收模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令; 第一操作指令發(fā)送模塊,適于通過所述第一 I/O線程將所述操作指令發(fā)送至所述第二I/O線程中;第二操作指令發(fā)送模塊,適于采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中; 渲染模塊,適于采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染; 網(wǎng)頁發(fā)送模塊,適于通過所述第二 I/o線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中; 網(wǎng)頁顯示模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
7.如權(quán)利要求6所述的裝置,其特征在于,所述操作指令接收模塊還適于: 采用所述第一 I/o線程接收到觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令。
8.如權(quán)利要求6所述的裝置,其特征在于,所述操作指令中包括第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí); 所述第二操作指令發(fā)送模塊還適于: 提取所述操作指令中的第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí); 采用所述第二 I/O線程采用系統(tǒng)消息循環(huán)指令將所述操作指令發(fā)送至所述第二瀏覽器內(nèi)核進(jìn)程標(biāo)識(shí)和標(biāo)簽頁面子線程標(biāo)識(shí)對(duì)應(yīng)的標(biāo)簽頁面子線程中。
9.如權(quán)利要求6所述的裝置,其特征在于,所述適配內(nèi)核判定模塊還適于: 在所述第一瀏覽器內(nèi)核進(jìn)程中采用當(dāng)前網(wǎng)頁的URL查找當(dāng)前網(wǎng)頁匹配的瀏覽器內(nèi)核進(jìn)程; 當(dāng)查找到時(shí),判定匹配的瀏覽器內(nèi)核為第二瀏覽器內(nèi)核進(jìn)程。
10.一種瀏覽器,所述瀏覽器包括第一瀏覽器內(nèi)核進(jìn)程和第二瀏覽器內(nèi)核進(jìn)程,所述第一瀏覽器內(nèi)核進(jìn)程包括第一 I/o線程,所述第二瀏覽器內(nèi)核進(jìn)程包括第二 I/O線程和窗口線程,所述窗口線程包括一個(gè)或多個(gè)標(biāo)簽頁面子線程,所述瀏覽器包括: 適配內(nèi)核判定模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程判定當(dāng)前網(wǎng)頁適于采用第二瀏覽器內(nèi)核進(jìn)程加載; 操作指令接收模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程接收觸發(fā)當(dāng)前網(wǎng)頁加載的操作指令; 第一操作指令發(fā)送模塊,適于通過所述第一 I/o線程將所述操作指令發(fā)送至所述第二I/O線程中; 第二操作指令發(fā)送模塊,適于采用所述第二 I/O線程將所述操作指令發(fā)送至當(dāng)前網(wǎng)頁對(duì)應(yīng)的標(biāo)簽頁面子線程中; 渲染模塊,適于采用所述標(biāo)簽頁面子線程按照所述操作指令對(duì)當(dāng)前網(wǎng)頁進(jìn)行渲染; 網(wǎng)頁發(fā)送模塊,適于通過所述第二 I/o線程將渲染后的網(wǎng)頁發(fā)送至所述第一 I/O線程中; 網(wǎng)頁顯示模塊,適于采用所述第一瀏覽器內(nèi)核進(jìn)程對(duì)渲染后的網(wǎng)頁進(jìn)行顯示。
【文檔編號(hào)】G06F17/30GK103544068SQ201310493264
【公開日】2014年1月29日 申請(qǐng)日期:2013年10月18日 優(yōu)先權(quán)日:2013年10月18日
【發(fā)明者】宗小斌, 任寰 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司