專利名稱:網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng)。
背景技術(shù):
目前的網(wǎng)頁應(yīng)用在發(fā)布時以文本文件形式保存了 JavaScript/HTML/CSS的源代碼。在每次網(wǎng)頁應(yīng)用程序被加載執(zhí)行時,瀏覽器會將文本表示的HTML/CSS標(biāo)簽解析成二進制的內(nèi)部表示,而JavaScript源代碼會被JavaScript虛擬機翻譯并執(zhí)行。加載網(wǎng)頁應(yīng)用的瀏覽器和JavaScript虛擬機所進行的源代碼解析工作將消耗很多性能,當(dāng)網(wǎng)頁應(yīng)用變得復(fù)雜時,用戶會有系統(tǒng)反應(yīng)變遲鈍的感覺。另外,以文本形式發(fā)布程序的源代碼,也不利于網(wǎng)頁應(yīng)用源代碼的保密和維權(quán)。因此,需要一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng),避免網(wǎng)頁應(yīng)用在加載時所進行的解析和二進制翻譯工作,提高網(wǎng)頁應(yīng)用的運行性能和源代碼保密性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng),避免網(wǎng)頁應(yīng)用在每次執(zhí)行時所進行的文本形式的代碼解析和二進制翻譯工作,提高網(wǎng)頁應(yīng)用的運行性能和源代碼保密性能。為解決上述問題,本發(fā)明提供一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法,所述網(wǎng)絡(luò)應(yīng)用以文本形式保存的源代碼包括第一類程序源代碼和第二類程序源代碼,所述提速方法在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段進行,包括:將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,保存至一存檔文件;將所述第二類程序源代碼直接翻譯成本機代碼,保存至所述存檔文件;根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼;本機安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。進一步的,所述第一類程序源代碼包括HTML、XML和CSS ;所述第二類程序源代碼包括 JavaScript。進一步的,將所述第一類程序源代碼預(yù)編譯成二進制格式數(shù)據(jù)的步驟包括:讀取并解析所述HTML、XML及CSS程序源代碼文件;產(chǎn)生DOM對象樹;二進制序列化所述DOM對象樹,生成二進制格式代碼并保存至所述存檔文件。進一步的,解析HTML、XML及CSS程序源代碼文件時,識別出包含有嵌入JavaScript程序源代碼的HTML、XML及CSS程序源代碼文件并提取其嵌入的JavaScript程序源代碼,對所述嵌入的JavaScript源代碼進行詞法和語法分析,直接翻譯為本機代碼,更新DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置至所述存檔文件中。進一步的,所述的網(wǎng)頁應(yīng)用執(zhí)行的提速方法還包括:對所述二進制格式代碼和本機代碼進行壓縮、加密、數(shù)字簽名。相應(yīng)的,本發(fā)明還提供一種網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),所述網(wǎng)絡(luò)應(yīng)用以文本形式保存的源代碼包括第一類程序源代碼和第二類程序源代碼,所述提速系統(tǒng)包括:編譯器,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,并保存至一存檔文件;翻譯器,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第二類程序源代碼直接翻譯成本機代碼,并保存至所述存檔文件;本機執(zhí)行器,用于本機根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。進一步的,所述編譯器將所述第一類程序源代碼預(yù)編譯成二進制格式代碼的步驟包括:讀取并解析HTML、XML及CSS程序源代碼文件;產(chǎn)生DOM對象樹;二進制序列化所述DOM對象樹,生成二進制格式代碼保存到一輸出文件;進一步的,所述編譯器解析HTML、XML及CSS程序源代碼文件時,識別出包含有嵌入JavaScript程序源代碼的HTML、XML及CSS程序源代碼文件并調(diào)用所述翻譯器,所述翻譯器提取其嵌入的JavaScript源程序代碼并對所述嵌入的JavaScript代碼進行詞法和語法分析,直接翻譯成本機代碼,所述編譯器更新所述DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置至所述存檔文件中。進一步的,所述的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng)還包括:加密器,用于對所述二進制格式代碼和本機代碼進行壓縮、加密及數(shù)字簽名。與現(xiàn)有技術(shù)相比,本發(fā)明提供的網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng),在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將網(wǎng)絡(luò)應(yīng)用中如HTML/CSS/JavaScript程序源代碼文件預(yù)編譯為二進制格式代碼,將如JavaScript源代碼直接翻譯成本機代碼,本機根據(jù)所述二進制格式代碼可以確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,然后安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件,在網(wǎng)頁應(yīng)用從發(fā)布到執(zhí)行多次的過程中僅需一次文本形式的代碼解析和二進制翻譯,從而避免了網(wǎng)頁應(yīng)用在每次執(zhí)行時所進行的文本形式的代碼解析和二進制翻譯工作,提高網(wǎng)頁應(yīng)用的運行性能。
圖1是本發(fā)明一實施例的網(wǎng)頁應(yīng)用執(zhí)行的提速方法流程圖2是本發(fā)明一實施例中HTML、XML及CSS程序的編譯流程圖;圖3是本發(fā)明一實施例中對網(wǎng)頁應(yīng)用程序進行二進制編譯和翻譯的示意圖;圖4是本發(fā)明一實施例中對預(yù)編譯的網(wǎng)頁應(yīng)用程序進行加載執(zhí)行的流程圖;圖5是本發(fā)明一實施例的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng)架構(gòu)示意圖。
具體實施例方式本發(fā)明所述的網(wǎng)頁應(yīng)用,在發(fā)布時主要以文本形式保存了兩類源代碼文件,第一類程序源代碼文件主要包括HTML/XML/CSS源代碼文件;第二類程序源代碼主要包括JavaScript的源代碼文件。HTML即文本標(biāo)記語言(Hypertext Markup Language),是用于描述網(wǎng)頁文檔的一種標(biāo)記語目。XML即可擴展標(biāo)記語言(Extensible Markup Language),用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進行定義的源語言,提供統(tǒng)一的方法來描述和交換獨立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。CSS即級聯(lián)樣式表(Cascading Style Sheet),通常又稱為“風(fēng)格樣式表(StyleSheet) ”,它是用來進行網(wǎng)頁風(fēng)格設(shè)計的。比如,如果想讓鏈接字未點擊時是藍(lán)色的,當(dāng)鼠標(biāo)移上去后字變成紅色的且有下劃線,這就是一種風(fēng)格。通過設(shè)立樣式表,可以統(tǒng)一地控制HMTL中各標(biāo)志的顯示屬性。級聯(lián)樣式表可以使人更能有效地控制網(wǎng)頁外觀。使用級聯(lián)樣式表,可以擴充精確指定網(wǎng)頁元素位置,外觀以及創(chuàng)建特殊效果的能力。JavaScript是一種基干對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言。同時也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能,比如響應(yīng)用戶的各種操作。完整的JavaScript實現(xiàn)包含三個部分:ECMAScript,文檔對象模型,字節(jié)順序記號。以下結(jié)合附圖和具體實施例對本發(fā)明提出的網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng)作進一步詳細(xì)說明。如圖1所示,本實施例提供了一種在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段進行的提速方法,包括以下步驟:SI,將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,保存至一存檔文件;S2,將所述第二類程序源代碼直接翻譯成本機代碼,保存至所述存檔文件;S3,本機根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼;S4,本機安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。在本實施例中,步驟SI對HTML、XML及CSS程序源代碼文件的預(yù)編譯過程中,首先讀取并解析所述HTML、XML及CSS程序源代碼文件,產(chǎn)生DOM對象樹;然后二進制序列化所述DOM對象樹,生成二進制格式代碼并保存至存檔文件。如圖2所示,在網(wǎng)絡(luò)應(yīng)用的HTML、XML及CSS程序源代碼文件中一般會嵌入JavaScript源代碼,因此,本實施例對HTML、XML及CSS程序源代碼文件進行二進制格式的預(yù)編譯流程如下:SllO:讀取所述HTML、XML及CSS程序源代碼文件;Slll:解析所述HTML、XML及CSS程序源代碼文件,產(chǎn)生DOM對象樹,并判斷是否出現(xiàn)解析錯誤;若是,則執(zhí)行步驟S113:提示錯誤信息并推出所述網(wǎng)頁應(yīng)用的初次安裝或執(zhí)行;若否,則執(zhí)行步驟S114:判斷所述HTML、XML及CSS程序源代碼文件是否包含有嵌入的JavaScript源代碼,若是,執(zhí)行步驟SI 15至SI 17 ;若否,直接執(zhí)行步驟SI 18 ;SI 15:提取所述HTML、XML及CSS程序源代碼文件中嵌入的JavaScript程序源代碼;S116 ;對所述嵌入的JavaScript源代碼進行詞法和語法分析,翻譯成本機代碼;SI 17:更新DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置;SI 18:二進制序列化所述DOM對象樹,生成二進制格式代碼;S119:對所述二進制格式代碼以及本機代碼進行壓縮、加密以及數(shù)字簽名保存至一輸出文件,并將所述輸出文件發(fā)布。本實施例中,步驟Slll的編譯過程中,源代碼文件具有錯誤,比如不合法的HTML標(biāo)簽,錯誤的CSS結(jié)構(gòu)等,可以提示用戶錯誤信息,并拒絕產(chǎn)生編譯結(jié)果。步驟S119中對二進制格式代碼以及本機代碼進行壓縮、加密以及數(shù)字簽名等,用于保護編譯的二進制代碼以及翻譯的本機代碼不被非法逆向工程或者篡改。本實施例中,對于HTML/XML文件,編譯過程與瀏覽器解析這類文件類似,將他們進行解析,并在內(nèi)存中產(chǎn)生DOM對象樹。但這里的編譯并不會將DOM對象樹用于圖形渲染,而是將它進行序列化,保存于輸出文件。如圖3所示,按照每個html/xml文件進行,編譯結(jié)果將產(chǎn)生于源文件同名,但不同擴展名的編譯文件,如a.html通過編譯后將產(chǎn)生a.chtml (compiled html),該文件保存至存檔文件。該存檔文件作為以后每次網(wǎng)絡(luò)應(yīng)用執(zhí)行的基本數(shù)據(jù)庫,可以避免每次執(zhí)行的二進制編譯工作。同樣的,如圖3所示,對于CSS樣式表,編譯過程也瀏覽器解析這類文件向類似。編譯單位將按每個CSS源代碼文件進行,編譯器將解析在內(nèi)存中的CSS對象進行二進制序列化到對應(yīng)文件,比如a.css將編譯產(chǎn)生a.ccss (compiled css),然后保存至存檔文件。本實施例中,如圖3所示,在步驟S2的翻譯過程中,將JavaScript程序源代碼針對本機環(huán)境進行翻譯時按照每個JavaScript源代碼文件為單位進行,將文本形式的JavaScript源代碼進行必要的詞法、語法分析和檢查,并最終產(chǎn)生本機代碼,比如a.js將翻譯產(chǎn)生a..codecache,然后保存至存檔文件。最終的產(chǎn)生的本機代碼也可以經(jīng)過壓縮、加密、數(shù)據(jù)簽名,保證本機代碼數(shù)據(jù)不被逆向工程和篡改。在步驟S2的JavaScript程序源代碼的翻譯過程中,主要是針對本機的硬件特性來進行優(yōu)化,比如設(shè)備是否具有特殊的硬件(如GPU)、是否支持某種特殊的硬件加速和CPU的特殊優(yōu)化指令集。本實施例中步驟SI和S2的二進制格式代碼以及本機代碼是經(jīng)過壓縮、加密以及數(shù)字簽名的,所以網(wǎng)絡(luò)應(yīng)用在被加載并執(zhí)行時需要檢查二進制格式代碼以及本機代碼的完整性和有效性。如圖4所示網(wǎng)絡(luò)應(yīng)用在被加載并執(zhí)行的步驟包括:S30,在所述網(wǎng)頁應(yīng)用的加載執(zhí)行階段,讀取所述輸出文件中的HTML、XML及CSS程序源代碼對應(yīng)的二進制格式代碼,并驗證所述二進制格式代碼是否完整;若否,提示錯誤信息,并退出所述網(wǎng)頁應(yīng)用的加載執(zhí)行;若是,執(zhí)行步驟S31:在所述本機中產(chǎn)生DOM對象樹;S32,判斷是否有需要加載的JavaScript程序,若否,執(zhí)行步驟S40 ;若是,則執(zhí)行步驟S33:在存檔文件中找到需要加載的JavaScript程序?qū)?yīng)的本機代碼;S34,檢查所述對應(yīng)的本機代碼的數(shù)字簽名是否有效,若否,提示錯誤信息,并退出所述網(wǎng)頁應(yīng)用的加載執(zhí)行;若是,執(zhí)行步驟S40至S42 ;S40,執(zhí)行所述對應(yīng)的本機代碼;S41,完成網(wǎng)絡(luò)應(yīng)用的圖形渲染;S42,退出網(wǎng)絡(luò)應(yīng)用的程序執(zhí)行。本實施例中,圖4中所示流程實際上執(zhí)行的結(jié)果是:當(dāng)預(yù)先編譯的網(wǎng)頁應(yīng)用被執(zhí)行時,之前預(yù)先編譯的HTML/XML/CSS文件的二進制格式代碼文件將被瀏覽器或者執(zhí)行宿主加載,并檢查二進制格式代碼文件有效性;由于解析動作已經(jīng)在預(yù)編譯階段完成,因此瀏覽器或者執(zhí)行宿主無需執(zhí)行額外的解析工作,可以直接從預(yù)編譯的對應(yīng)文件中產(chǎn)生DOM對象樹;瀏覽器或者執(zhí)行宿主在執(zhí)行網(wǎng)頁應(yīng)用時,將首先根據(jù)由HTML/XML/CSS編譯而來的DOM樹決定需要加載的JavaScript程序;在確定需要加載的JavaScript程序源代碼.js文件后,瀏覽器或者執(zhí)行宿主將查詢網(wǎng)頁應(yīng)用的存檔文件中.codecache文件,找到與需要加載的JavaScript程序源代碼相對應(yīng)的本機代碼;在開始執(zhí)行對應(yīng)的本機代碼前,瀏覽器或者執(zhí)行宿主檢查對.codecache文件數(shù)字簽名的有效性,確保該.codecache文件沒有被惡意修改,在確認(rèn)數(shù)字簽名合法有效后,與需要加載的JavaScript程序源代碼對應(yīng)的本機代碼將開始執(zhí)行。如果數(shù)字簽名無效,則提示錯誤,拒絕執(zhí)行行網(wǎng)絡(luò)應(yīng)用程序。如圖5所示,本實施例還提供一種網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),所述提速系統(tǒng)包括:編譯器51,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,并保存至一存檔文件;翻譯器52,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第二類程序源代碼直接翻譯成本機代碼,并保存至所述存檔文件;加密器53,用于對所述二進制格式代碼和本機代碼進行壓縮、加密及數(shù)字簽名;本機執(zhí)行器54,用于根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。本實施例中,編譯器51為HTML/XML/CSS編譯器,翻譯器52為JavaScript翻譯器;當(dāng)編譯器51在解析HTML、XML及CSS程序源代碼文件時,可以識別出包含有嵌入JavaScript程序源代碼的HTML、XML及CSS程序源代碼文件并調(diào)用所述翻譯器52,所述翻譯器52提取其嵌入的JavaScript源程序代碼并對所述嵌入的JavaScript代碼進行詞法和語法分析,直接翻譯成本機代碼,所述編譯器51更新所述DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置至所述存檔文件中。本實施例中,由于加密器53對所述編譯器51的二進制格式代碼以及對翻譯器52的本機代碼進行了壓縮、加密及數(shù)字簽名,因此,本機執(zhí)行器35在執(zhí)行過程中,先解壓存檔文件及其二進制格式代碼和本機代碼,然后驗證加載的二進制格式代碼和本機代碼的完整性以及數(shù)字簽名的有效性,當(dāng)數(shù)據(jù)完整有效時才能使得本機執(zhí)行器35完成網(wǎng)絡(luò)應(yīng)用的程序安裝及執(zhí)行。綜上所述,在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將網(wǎng)絡(luò)應(yīng)用中如HTML/CSS/JavaScript程序源代碼文件預(yù)編譯為二進制格式代碼,將如JavaScript源代碼直接翻譯成本機代碼,本機根據(jù)所述二進制格式代碼可以確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,然后安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件,在網(wǎng)頁應(yīng)用發(fā)布到執(zhí)行多次的過程中僅需一次文本形式的代碼解析和二進制翻譯,從而避免了網(wǎng)頁應(yīng)用在每次執(zhí)行時所進行的文本形式的代碼解析和二進制翻譯工作,提高網(wǎng)頁應(yīng)用的運行性能。顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法,所述網(wǎng)絡(luò)應(yīng)用以文本形式保存的源代碼包括第一類程序源代碼和第二類程序源代碼,其特征在于,所述提速方法在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段進行,包括: 將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,保存至一存檔文件; 將所述第二類程序源代碼直接翻譯成本機代碼,保存至所述存檔文件; 根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼; 在所述網(wǎng)頁應(yīng)用的加載執(zhí)行階段,本機安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。
2.如權(quán)利要求1所述的網(wǎng)頁應(yīng)用執(zhí)行的提速方法,其特征在于,所述第一類程序源代碼包括HTML、XML和CSS ;所述第二類程序源代碼包括JavaScript。
3.如權(quán)利要求2所述的網(wǎng)頁應(yīng)用執(zhí)行的提速方法,其特征在于,將所述第一類程序源代碼預(yù)編譯成二進制格式數(shù)據(jù)的步驟包括: 讀取并解析所述HTML、XML及CSS程序源代碼文件; 產(chǎn)生DOM對象樹; 二進制序列化所述DOM對象樹,生成二進制格式代碼并保存至所述存檔文件。
4.如權(quán)利要求3所述的網(wǎng)頁應(yīng)用執(zhí)行的提速方法,其特征在于,解析HTML、XML及CSS程序源代碼文件時,識別出包含有嵌入JavaScript程序源代碼的HTML、XML及CSS程序源代碼文件并提取其嵌入的JavaScript程序源代碼,對所述嵌入的JavaScript源代碼進行詞法和語法分析,直接翻譯為本機代碼,更新DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置至所述存檔文件中。
5.如權(quán)利要求1中任一項所述的網(wǎng)頁應(yīng)用執(zhí)行的提速方法,其特征在于,還包括:對所述二進制格式代碼和本機代碼進行壓縮、加密、數(shù)字簽名。
6.一種網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),所述網(wǎng)絡(luò)應(yīng)用以文本形式保存的源代碼包括第一類程序源代碼和第二類程序源代碼,其特征在于,所述提速系統(tǒng)包括: 編譯器,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第一類程序源代碼預(yù)編譯成二進制格式代碼,并保存至一存檔文件; 翻譯器,用于在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將所述第二類程序源代碼直接翻譯成本機代碼,并保存至所述存檔文件; 本機執(zhí)行器,用于本機根據(jù)所述二進制格式代碼確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,安裝或執(zhí)行所述二進制格式代碼及所述相應(yīng)的本機代碼,并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件。
7.如權(quán)利要求6所述的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),其特征在于,所述第一類程序源代碼包括HTML、XML、CSS ;所述第二類程序源代碼包括JavaScript。
8.如權(quán)利要求7所述的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),其特征在于,所述編譯器將所述第一類程序源代碼預(yù)編譯成二進制格式代碼的步驟包括: 讀取并解析HTML、XML及CSS程序源代碼文件;產(chǎn)生DOM對象樹; 二進制序列化所述DOM對象樹,生成二進制格式代碼保存到一輸出文件。
9.如權(quán)利要求8所述的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),其特征在于,所述編譯器解析HTML、XML及CSS程序源代碼文件時,識別出包含有嵌入JavaScript程序源代碼的HTML、XML及CSS程序源代碼文件并調(diào)用所述翻譯器,所述翻譯器提取其嵌入的JavaScript源程序代碼并對所述嵌入的JavaScript代碼進行詞法和語法分析,直接翻譯成本機代碼,所述編譯器更新所述DOM對象樹,記錄所述嵌入的JavaScript源代碼與相應(yīng)的HTML、XML及CSS程序源代碼文件的包含關(guān)系及其位于HTML、XML及CSS程序源代碼文件的邏輯位置至所述存檔文件中。
10.如權(quán)利要求6所述的網(wǎng)頁應(yīng)用執(zhí)行的提速系統(tǒng),其特征在于,還包括:加密器,用于對所述二進制格式代碼和本機代 碼進行壓縮、加密及數(shù)字簽名。
全文摘要
本發(fā)明提供一種網(wǎng)頁應(yīng)用執(zhí)行的提速方法及系統(tǒng),在所述網(wǎng)頁應(yīng)用的初次安裝或加載執(zhí)行階段,將網(wǎng)絡(luò)應(yīng)用中如HTML/CSS/JavaScript程序源代碼文件預(yù)編譯為二進制格式代碼,將如JavaScript源代碼直接翻譯成本機代碼,本機根據(jù)所述二進制格式代碼可以確定需要加載的第二類程序源代碼,并在所述存檔文件中找到所述需要加載的第二類程序源代碼相應(yīng)的本機代碼,然后安裝或執(zhí)行并將安裝或執(zhí)行的結(jié)果保存至所述存檔文件,在網(wǎng)頁應(yīng)用發(fā)布到執(zhí)行多次的過程中僅需一次文本形式的代碼解析和二進制翻譯,從而避免了網(wǎng)頁應(yīng)用在每次執(zhí)行時所進行的文本形式的代碼解析和二進制翻譯工作,提高網(wǎng)頁應(yīng)用的運行性能。
文檔編號G06F9/45GK103176807SQ20111043672
公開日2013年6月26日 申請日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者陳士凱 申請人:盛樂信息技術(shù)(上海)有限公司