一種ie內(nèi)核瀏覽器的頁面下載控制方法和系統(tǒng)的制作方法
【專利摘要】本申請?zhí)峁┝艘环NIE內(nèi)核瀏覽器的頁面下載控制方法和系統(tǒng),其中,所述方法包括:啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程;在所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求;當所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載,并在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信息。本申請可以有效控制IE內(nèi)核瀏覽器的頁面下載過程,提高頁面下載的效率和穩(wěn)定性。
【專利說明】—種IE內(nèi)核瀏覽器的頁面下載控制方法和系統(tǒng)
[0001]本發(fā)明專利申請是申請日為2011年9月26日、申請?zhí)枮?01110289062.5、名稱為“一種IE內(nèi)核瀏覽器的頁面下載控制方法和系統(tǒng)”的中國發(fā)明專利申請的分案申請。
【技術(shù)領(lǐng)域】
[0002]本申請涉及瀏覽器的【技術(shù)領(lǐng)域】,特別是涉及一種IE內(nèi)核瀏覽器的頁面下載控制方法和一種IE內(nèi)核瀏覽器的頁面下載控制系統(tǒng)。
【背景技術(shù)】
[0003]瀏覽器最重要的部分是“Rendering Engine”,可大概譯為“解釋引擎”,一般習(xí)慣將之稱為“瀏覽器內(nèi)核”。瀏覽器內(nèi)核負責(zé)對網(wǎng)頁語法的解釋(如HTML、JavaScript)并渲染(顯示)網(wǎng)頁。所以,通常所謂的瀏覽器內(nèi)核也就是對頁面進行下載、解析、執(zhí)行、渲染的引擎,該引擎決定了瀏覽器如何顯示網(wǎng)頁的內(nèi)容以及頁面的格式信息。
[0004]目前市場上流行的瀏覽器,按實現(xiàn)方式大體可以分為兩種:
[0005]第一種,瀏覽器的開發(fā)者既進行瀏覽器內(nèi)核的開發(fā),也進行瀏覽器產(chǎn)品的開發(fā)。如:chrome瀏覽器、firefox瀏覽器、Safari瀏覽器、InternetExplore瀏覽器等。
[0006]第二種,瀏覽器的開發(fā)者,僅進行瀏覽器產(chǎn)品的開發(fā),使用其他瀏覽器廠商實現(xiàn)的內(nèi)核。將內(nèi)核嵌入到自己瀏覽器內(nèi)來使用。如:360安全瀏覽器、遨游瀏覽器、世界之窗瀏覽器、搜狗瀏覽器等。這種瀏覽器通常采用Internet Explorer瀏覽器內(nèi)核,通常被稱之為“IE內(nèi)核瀏覽器”。
[0007]目前市場上所有的IE內(nèi)核瀏覽器,僅是直接使用系統(tǒng)提供的WebBrowser組件實現(xiàn)。具體的使用方法是,首先用OleCreate API (應(yīng)用程序接口)創(chuàng)建WebBrowser組件,獲取組件創(chuàng)建的窗口,將其嵌入到瀏覽器的窗口內(nèi)。然后調(diào)用該WebBrowser組件提供的接口,讓它訪問網(wǎng)址。在整個訪問過程中,由WebBrowser組件自己的代碼來進行網(wǎng)頁的下載、解析、執(zhí)行、渲染。外殼程序僅需接收組件返回的通知,變更相應(yīng)界面內(nèi)容。
[0008]IE內(nèi)核為了讓開發(fā)者使用起來非常簡單,所以暴露的接口非常有限,一般只提供訪問網(wǎng)頁、停止、刷新、后退等基本接口,僅能對頁面進行簡單的控制,如訪問某網(wǎng)址、刷新、停止、后退等。對于很多內(nèi)部情況,瀏覽器開發(fā)者毫不知情、無法控制。尤其是無法控制頁面下載過程,從而影響頁面下載的效率和穩(wěn)定性。
[0009]總之,需要本領(lǐng)域技術(shù)人員迫切解決的一個技術(shù)問題就是:如何能夠有效控制IE內(nèi)核瀏覽器的頁面下載過程,以提高頁面下載的效率和穩(wěn)定性。
【發(fā)明內(nèi)容】
[0010]本申請所要解決的技術(shù)問題是提供一種IE內(nèi)核瀏覽器的頁面下載控制方法,用以有效控制IE內(nèi)核瀏覽器的頁面下載過程,提高頁面下載的效率和穩(wěn)定性。
[0011]相應(yīng)地,本申請還提供了一種IE內(nèi)核瀏覽器的頁面下載控制系統(tǒng),用以保證上述方法在實際中的應(yīng)用。[0012]為解決上述問題,本申請?zhí)峁┝艘环NIE內(nèi)核瀏覽器的頁面下載控制方法,包括:
[0013]啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程;
[0014]在所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求;
[0015]當所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載,并在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信
肩、O
[0016]優(yōu)選的是,所述的方法還包括:
[0017]所述IE內(nèi)核瀏覽器進程依據(jù)所述下載狀態(tài)信息,對下載的頁面數(shù)據(jù)進行解析、執(zhí)行、和/或渲染的操作。
[0018]優(yōu)選的是,所述在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議的步驟為,使用IInternetSession接口的RegisterNameSpace方法,在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,所述通信協(xié)議包括http協(xié)議、https協(xié)議、mailto協(xié)議和FTP協(xié)議。
[0019]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0020]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0021]下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0022]獲取所述頁面下載請求對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0023]依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
[0024]優(yōu)選的是,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息,所述頁面下載請求對應(yīng)的頁面資源類型通過讀取所述擴展名信息獲取。
[0025]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到IE下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0026]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0027]下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息;
[0028]判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
[0029]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0030]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0031]下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則從緩存中提取該文件;若否,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0032]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟還包括:[0033]在從緩存中提取文件進行下載的步驟之前,查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0034]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0035]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息;
[0036]下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0037]讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0038]依次處理所述下載任務(wù)列表中的頁面下載請求,獲取頁面下載請求對應(yīng)的文件大小信息;
[0039]判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
[0040]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0041]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息;
[0042]下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件;
[0043]若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0044]其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括:
[0045]下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0046]讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0047]依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
[0048]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到IE下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0049]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0050]下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件;
[0051]若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0052]其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括:
[0053]下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息;
[0054]判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
[0055]優(yōu)選的是,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:
[0056]當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息;
[0057]下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件;
[0058]若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0059]其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括:
[0060]下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0061]讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0062]依次處理所述下載任務(wù)列表中的頁面下載請求,獲取頁面下載請求對應(yīng)的文件大小信息;
[0063]判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
[0064]本申請實施例還公開了一種IE內(nèi)核瀏覽器的頁面下載控制系統(tǒng),包括:
[0065]啟動模塊,用于啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程;
[0066]協(xié)議注冊模塊,用于在所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求;
[0067]下載控制模塊,用于在所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載;
[0068]狀態(tài)匯報模塊,用于在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信息。
[0069]優(yōu)選的是,所述頁面下載控制系統(tǒng),還包括:
[0070]內(nèi)核操作模塊,用于由所述IE內(nèi)核瀏覽器進程依據(jù)所述下載狀態(tài)信息,對下載的頁面數(shù)據(jù)進行解析、執(zhí)行、和/或渲染的操作。
[0071]優(yōu)選的是,所述下載控制模塊包括:
[0072]請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0073]任務(wù)添加子模塊,用于由下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0074]排序子模塊,用于獲取所述頁面下載請求對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0075]下載執(zhí)行子模塊,用于依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
[0076]優(yōu)選的是,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息,所述頁面下載請求對應(yīng)的頁面資源類型通過讀取所述擴展名信息獲取。
[0077]優(yōu)選的是,所述下載控制模塊包括:
[0078]請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0079]文件大小獲取子模塊,用于由下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息;
[0080]文件大小判斷子模塊,用于判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則調(diào)用多線程下載子模塊;否則,調(diào)用單線程下載子模塊;
[0081]多線程下載子模塊,用于采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作;
[0082]單線程下載子模塊,用于采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
[0083]優(yōu)選的是,所述下載控制模塊包括:
[0084]請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0085]緩存判斷子模塊,用于由下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則觸發(fā)緩存提取子模塊;若否,則觸發(fā)服務(wù)器下載子模塊;
[0086]緩存提取子模塊,用于從緩存中提取該文件;
[0087]服務(wù)器下載子模塊,用于根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
[0088]優(yōu)選的是,所述下載控制模塊還包括:
[0089]緩存超期判斷子模塊,用于在觸發(fā)緩存提取子模塊之前,查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則調(diào)用服務(wù)器下載子模塊。
[0090]與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點:
[0091]本申請使用IE的協(xié)議管理擴展接口,來將IE內(nèi)核瀏覽器的全部下載都自己接管,從而使嵌入IE內(nèi)核瀏覽器的外殼程序,能夠自行控制瀏覽器內(nèi)核的下載,并將下載后的數(shù)據(jù)送回IE內(nèi)核,讓其繼續(xù)執(zhí)行解析、執(zhí)行、渲染的工作。由于下載行為不發(fā)生在瀏覽器進程,當下載遇到問題程序崩潰時,瀏覽器進程不會隨之崩潰,可以重新啟動一個下載進程繼續(xù)下載。因而,本申請可以有效控制IE內(nèi)核瀏覽器的頁面下載過程,以提高頁面下載的效率和穩(wěn)定性。
[0092]再者,本申請通過采用資源排序、多線程下載和緩存讀寫的下載優(yōu)化方案,能提升下載速度和頁面展現(xiàn)速度,充分發(fā)揮用戶的帶寬,提高資源利用率。
【專利附圖】
【附圖說明】
[0093]圖1是本申請的一種IE內(nèi)核瀏覽器的頁面下載控制方法實施例的步驟流程圖;
[0094]圖2是是本申請的一種IE內(nèi)核瀏覽器的頁面下載控制系統(tǒng)實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0095]為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本申請作進一步詳細的說明。
[0096]本申請的核心構(gòu)思在于,使嵌入IE內(nèi)核瀏覽器的外殼程序,能夠自行控制瀏覽器內(nèi)核的下載,并將下載后的數(shù)據(jù)送回IE內(nèi)核,讓其繼續(xù)執(zhí)行解析、執(zhí)行、渲染的工作。
[0097]參考圖1,示出了本申請的一種IE內(nèi)核瀏覽器的頁面下載控制方法實施例的步驟流程圖,具體可以包括以下步驟:
[0098]步驟101、啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程;
[0099]在本申請實施例中,所述IE內(nèi)核瀏覽器進程是指采用IE(Internet Explorer)瀏覽器內(nèi)核的瀏覽器進程?,F(xiàn)有技術(shù)中,瀏覽器內(nèi)核負責(zé)對頁面進行下載、解析、執(zhí)行、渲染,而在本實施例中,IE瀏覽器內(nèi)核僅用于完成解析、執(zhí)行、渲染的操作,下載的操作由預(yù)置的下載進程完成。
[0100]公知的是,進程是一個正在執(zhí)行的程序,即計算機中正在運行的程序?qū)嵗?;其可以分配給處理器并作為一個實體由處理器執(zhí)行。從用戶角度來看,瀏覽器進程可以理解為在任務(wù)管理器內(nèi)所啟動的瀏覽器代表的進程。
[0101]所述下載進程可以理解為IE內(nèi)核瀏覽器的另外一個進程,是一個專門用于下載操作的進程。即所述下載進程專門用于下載,而不做其他操作。作為本申請實施例具體實現(xiàn)的一種示例,所述下載進程內(nèi)部可以使用WinHTTP (WinHTTP的全稱是Microsoft WindowsHTTP Services,它提供給開發(fā)者一個HTTP客戶端應(yīng)用程序接口,通過這種API借助HTTP協(xié)議給其他的HTTP服務(wù)器發(fā)送請求)實現(xiàn)一個下載器,和一個下載管理器。即所述下載進程中可以包括一個下載管理器和一些下載器,其中,所述下載管理器可以用于按照預(yù)設(shè)的下載規(guī)則控制頁面下載,例如對下載資源的請求進行排序、優(yōu)化等;下載器則可以用于實現(xiàn)具體的下載操作,并通過下載管理器向IE內(nèi)核瀏覽器進程報告下載情況,即下載狀態(tài)信息。在實際中,這個下載進程就像一個服務(wù),啟動后隨時等待被調(diào)用。
[0102]在本申請實施例中,所述IE內(nèi)核瀏覽器進程啟動時,所述下載進程也會啟動,或者說,所述IE內(nèi)核瀏覽器進程啟動則會觸發(fā)所述下載進程啟動,以保證頁面在瀏覽器中的正常展現(xiàn)。
[0103]步驟102、在所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求;
[0104]在具體實現(xiàn)中,所述在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議的步驟可以為,使用IInternetSession接口的RegisterNameSpace方法,在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,所述通信協(xié)議可以包括http協(xié)議、https協(xié)議、mailto協(xié)議和FTP協(xié)議等。
[0105]具體而言,IInternetSession接口的 RegisterNameSpace 方法,要求了一個固定格式的接口,使用這個方法在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議之后,則所有采用相應(yīng)通信協(xié)議的頁面下載請求,都會傳送到預(yù)設(shè)的外殼程序接口,即當發(fā)生任何采用相應(yīng)通信協(xié)議(如http、https協(xié)議、mailto協(xié)議、FTP協(xié)議)的頁面下載請求時,IE內(nèi)核會通知或調(diào)用預(yù)設(shè)的外殼程序接口。
[0106]步驟103、當所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載,并在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信息。
[0107]在具體實現(xiàn)中,當IE內(nèi)核調(diào)用在通信協(xié)議注冊過程中提供的IlnternetProtocol接口的Start方法時,通過跨進程通信,將頁面下載請求發(fā)送到下載進程,并返回操作符E_PENDING,通知IE內(nèi)核操作正在執(zhí)行中。當下載到數(shù)據(jù)后,下載進程會通知到發(fā)起下載的IE內(nèi)核瀏覽器進程,IE內(nèi)核瀏覽器進程調(diào)用IE內(nèi)核提供的IInternetProtocolSink接口的相關(guān)方法,通知IE內(nèi)核下載進度、下載到的數(shù)據(jù)等下載狀態(tài)信息。
[0108]更具體而言,跨進程通信,是指將一個進程的請求轉(zhuǎn)到另一個進程,在本實施例中即指將IE內(nèi)核瀏覽器進程的頁面下載請求轉(zhuǎn)到下載進程,并在下載過程中,實時向IE內(nèi)核報告下載進度和下載數(shù)據(jù)等下載狀態(tài)信息??邕M程通信可以使用windows消息機制,并配合內(nèi)核對象進行數(shù)據(jù)傳輸。例如,在IE瀏覽器進程中注冊了 http協(xié)議后,一旦有基于http協(xié)議的頁面下載請求就會送到預(yù)設(shè)的瀏覽器外殼程序中。當IE內(nèi)核調(diào)用所述外殼程序的時候,會將這個頁面下載請求的相關(guān)信息都傳遞過來,外殼程序會將這些信息打包(放到一個數(shù)據(jù)塊中,數(shù)據(jù)塊中主要包括url、refresh、cookie等),然后通過Windows系統(tǒng)提供的標準管道通信,將此數(shù)據(jù)塊發(fā)送到下載進程。下載過程中向瀏覽器進程發(fā)送的Windows消息,主要是告訴瀏覽器當前下載的進度。
[0109]簡而言之,跨進程通信是雙方的,首先,IE內(nèi)核瀏覽器進程收到頁面下載請求后,會通過跨進程通信,告訴下載進程那些文件需要下載。另一方面,當下載請求執(zhí)行過程中,下載進程會向IE內(nèi)核瀏覽器進程發(fā)送消息,通知其下載進度、下載數(shù)據(jù)等下載狀態(tài)信息。
[0110]在本申請的一種優(yōu)選實施例中,所述步驟103中,當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟具體可以包括以下子步驟:
[0111]子步驟Sll、i IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;
[0112]子步驟S12、下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中;
[0113]子步驟S13、獲取所述頁面下載請求對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序;
[0114]子步驟S14、依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
[0115]在實際中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息,在這種情況下,所述頁面下載請求對應(yīng)的頁面資源類型可以通過讀取所述擴展名信息獲取。
[0116]本實施例主要涉及通過資源排序進行下載優(yōu)化的方案,是在下載進程控制下載的過程中實現(xiàn)的,也就是說,當瀏覽器進程接收到IE下載請求時,觸發(fā)下載進程執(zhí)行下載,在由下載器正式下載之前,下載管理器會對下載請求對應(yīng)的資源進行排序。
[0117]在實際應(yīng)用中,可以優(yōu)先下載文本類型的文件(如html、CSS、jS等類型的文件),將多媒體類型的文件(如圖片、flash等大資源的文件)靠后下載,因為網(wǎng)頁的展現(xiàn)并不依賴于它們。下載進程中的下載管理器內(nèi)會有一個下載任務(wù)列表,根據(jù)優(yōu)先級,可以確定將新增加的下載任務(wù)放到這個表中的那個位置。比如,html、css、js這些文本類型的文件都是網(wǎng)頁打開時必須的,所以可以放入這個表的前面。其他的圖片、flash等多媒體類型的文件則放入表尾。下載器會從表頭中不停的取任務(wù)來開始下載。這樣就實現(xiàn)了資源排序。
[0118]在實際中,每一個頁面下載請求都對應(yīng)一個下載任務(wù),每個下載任務(wù)資源類型是一種。
[0119]例如,假設(shè)在瀏覽器中訪問http://www.#/, IE內(nèi)核會產(chǎn)生5個下載請求,請求的內(nèi)容/類型/順序如下:
[0120]http://www.#/index, htm ;
[0121]http://www.#/360safe.css ;
[0122]http://www.#/product.swf ;
[0123]http://www.#/360safe.png ;
[0124]http://www.#/frame, htm。
[0125]按照與IE下載請求產(chǎn)生一致的順序,將上述頁面下載請求從IE內(nèi)核瀏覽器進程發(fā)送到下載進程。
[0126]假設(shè)現(xiàn)在下載進程內(nèi)的下載任務(wù)列表為空。當我們收到http://www.#/index, htm的頁面下載請求時,因為表是空的,則直接放入隊列內(nèi)。如表1所示,當前的下載任務(wù)列表中只有一個請求。
[0127]表1:
[0128]
【權(quán)利要求】
1.一種IE內(nèi)核瀏覽器的頁面下載控制方法,其特征在于,包括: 啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程; 在所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求;當所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載,并在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信息。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 所述IE內(nèi)核瀏覽器進程依據(jù)所述下載狀態(tài)信息,對下載的頁面數(shù)據(jù)進行解析、執(zhí)行、和/或渲染的操作。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議的步驟為,使用IInternetSession接口的RegisterNameSpace方法,在IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,所述通信協(xié)議包括http協(xié)議、https協(xié)議、mailto協(xié)議和FTP協(xié)議。
4.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程; 下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中; 獲取所述頁面下載請求對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請 求進行排序; 依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
5.如權(quán)利要求4所述的方法,其特征在于,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息,所述頁面下載請求對應(yīng)的頁面資源類型通過讀取所述擴展名信息獲取。
6.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到IE下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程; 下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息; 判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
7.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則從緩存中提取該文件;若否,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
8.如權(quán)利要求7所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟還包括: 在從緩存中提取文件進行下載的步驟之前,查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
9.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括:當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息; 下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中; 讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序; 依次處理所述下載任務(wù)列表中的頁面下載請求,獲取頁面下載請求對應(yīng)的文件大小信息; 判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面 的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
10.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息; 下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件; 若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。 其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括: 下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中; 讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序; 依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
11.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到IE下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件; 若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。 其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括: 下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息; 判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
12.如權(quán)利要求1或2所述的方法,其特征在于,所述當IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載的步驟包括: 當IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程;其中,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息;下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存;若否,則從緩存中提取該文件; 若所述頁面下載請求相應(yīng)的文件未被預(yù)先寫入緩存中,則根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。 其中,所述根據(jù)頁面下載請求從服務(wù)器下載相應(yīng)的文件的步驟包括: 下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中; 讀取所述頁面下載請求的擴展名信息獲取對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序; 依次處理所述下載任務(wù)列表中的頁面下載請求,獲取頁面下載請求對應(yīng)的文件大小信息; 判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作,否則,采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
13.—種IE內(nèi)核瀏覽器的頁面下載控制系統(tǒng),其特征在于,包括: 啟動模塊,用于啟動IE內(nèi)核瀏覽器進程,并啟動預(yù)置的下載進程; 協(xié)議注冊模塊,用于在 所述IE內(nèi)核瀏覽器進程中注冊通信協(xié)議,等待基于相應(yīng)通信協(xié)議的頁面下載請求; 下載控制模塊,用于在所述IE內(nèi)核瀏覽器進程收到頁面下載請求時,觸發(fā)所述下載進程按照預(yù)設(shè)的下載規(guī)則控制頁面下載; 狀態(tài)匯報模塊,用于在所述頁面下載過程中向IE內(nèi)核瀏覽器進程返回下載狀態(tài)信息。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,還包括: 內(nèi)核操作模塊,用于由所述IE內(nèi)核瀏覽器進程依據(jù)所述下載狀態(tài)信息,對下載的頁面數(shù)據(jù)進行解析、執(zhí)行、和/或渲染的操作。
15.如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述下載控制模塊包括: 請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程; 任務(wù)添加子模塊,用于由下載進程將所述頁面下載請求添加至預(yù)先生成的下載任務(wù)列表中; 排序子模塊,用于獲取所述頁面下載請求對應(yīng)的頁面資源類型,在所述下載任務(wù)列表中,按照所述頁面資源類型對頁面下載請求進行排序; 下載執(zhí)行子模塊,用于依次處理所述下載任務(wù)列表中的頁面下載請求,執(zhí)行相應(yīng)的頁面下載操作。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述頁面下載請求中包括URL信息,所述URL信息中包括擴展名信息,所述頁面下載請求對應(yīng)的頁面資源類型通過讀取所述擴展名信息獲取。
17.如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述下載控制模塊包括: 請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程; 文件大小獲取子模塊,用于由下載進程獲取所述頁面下載請求對應(yīng)的文件大小信息;文件大小判斷子模塊,用于判斷所述文件大小信息是否超過預(yù)設(shè)的文件大小閾值,若是,則調(diào)用多線程下載子模塊;否則,調(diào)用單線程下載子模塊; 多線程下載子模塊,用于采用多線程下載的方式執(zhí)行相應(yīng)頁面的下載操作; 單線程下載子模塊,用于采用單線程下載的方式執(zhí)行相應(yīng)頁面的下載操作。
18.如權(quán)利要求13或14所述的系統(tǒng),其特征在于,所述下載控制模塊包括: 請求傳送子模塊,用于在IE內(nèi)核瀏覽器進程收到頁面下載請求時,將所述頁面下載請求發(fā)送給下載進程; 緩存判斷子模塊,用于由下載進程根據(jù)所述頁面下載請求判斷所請求的文件是否已被預(yù)先寫入緩存中,若是,則觸發(fā)緩存提取子模塊;若否,則觸發(fā)服務(wù)器下載子模塊; 緩存提取子模塊,用于從緩存中提取該文件; 服務(wù)器下載子模塊,用于根據(jù)所述頁面下載請求從服務(wù)器下載相應(yīng)的文件,并將該文件寫入緩存。
19.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述下載控制模塊還包括: 緩存超期判斷子模塊,用于在觸發(fā)緩存提取子模塊之前,查詢該文件寫入緩存的時間是否超過預(yù)設(shè)期限,若是,則調(diào)用服務(wù)器下載子模塊。
【文檔編號】G06F17/30GK103838839SQ201410065255
【公開日】2014年6月4日 申請日期:2011年9月26日 優(yōu)先權(quán)日:2011年9月26日
【發(fā)明者】劉鴻威, 唐曦 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司