專利名稱:一種基于WebKit的瀏覽器頁面顯示方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種基于WebKit的瀏覽器頁面顯示方法及其裝置。
背景技術(shù):
在WebKit中,主要通過Webcore和JavaScriptCore處理接收到的內(nèi)容,創(chuàng)建版面樣式,顯示文本、圖片、表格單元和其他數(shù)據(jù)類型的內(nèi)容。一個Http請求在WebKit中的主要流程如下用戶從瀏覽器界面開始輸入URL地址,然后界面把URL發(fā)送到渲染進(jìn)程,渲染進(jìn)程再進(jìn)行處理,把網(wǎng)絡(luò)連接地址變成一個資源的消息,通過IPC機(jī)制把消息發(fā)送到資源下載進(jìn)程。下載進(jìn)程中的函數(shù)把消息變成一個網(wǎng)絡(luò)下載請求,創(chuàng)建一個下載任務(wù),完成設(shè)置 定時器、啟動下載任務(wù)等一系列操作,并向服務(wù)器發(fā)送下載請求。瀏覽器不斷的向服務(wù)器發(fā)送下載請求直到資源下載完全或下載超時為止,服務(wù)器響應(yīng)HTTP請求后返回給本地HTML/XHTML源數(shù)據(jù)。如果是第一次請求并順利訪問,服務(wù)器會在響應(yīng)HTTP請求后返回為200的狀態(tài),同時會返回給瀏覽器一些headers集合(例如Last-Modified和Etag等)和相應(yīng)請求資源,瀏覽器接收到這些信息后會將資源緩存在本地目錄中并保存這些頭(headers)信息,當(dāng)瀏覽器獲得返回給本地的HTML/XHTML數(shù)據(jù)后,通過DOM (Document ObjectModelMEHTML文本解析成DOM樹。當(dāng)用戶請求的網(wǎng)頁里面包含JavaScript腳本,并隨HTML文件一起傳送到客戶端瀏覽器上時,其中HTML文本中的JavaScript將由JavaScriptCore解析執(zhí)行。通過布局管理器Layout對DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS(Cascading Style Sheet)規(guī)定輸出的特性,比如顏色、字體等,通過渲染(Render)進(jìn)行視覺化表達(dá),最終繪制(Paint)顯示給客戶端用戶。WebKit對一個網(wǎng)頁首先下載資源,然后進(jìn)行布局,最后在屏幕上繪制,這是三步完成的,也就是布局(Layout)和繪制(Paint)是分開的,這是因為,如果在繪制步驟之前沒有執(zhí)行過布局步驟,那么圖形庫將不知道在哪里寫字或顯示圖像。其中布局管理器Layout負(fù)責(zé)確定Render樹(渲染樹)中每個葉子和中間節(jié)點(diǎn)的位置。在Layout過程結(jié)束以后,WebKit啟動繪制(Paint)過程,負(fù)責(zé)把Render樹中各個葉子節(jié)點(diǎn),在相應(yīng)的位置繪制出來。WebKit把具體繪制的工作,交給第三方圖形工具庫去完成。常用的第三方圖形工具庫包括QT, GTK+, ffx, Skia, Cairo 等等。Layout過程是根據(jù)瀏覽器要顯示的頁面大小而定的,也就是,下載下來的HTML文件和相應(yīng)資源后觸發(fā)相應(yīng)操作進(jìn)行布局,布局完成后再繪制(Paint)到瀏覽器的頁面上,當(dāng)同一網(wǎng)頁第二次請求或有刷新動作時,布局管理器Layout就要進(jìn)行一次布局,然后再Paint到頁面上。Layout是一個計算量很繁重的過程,主要體現(xiàn)在估算完每個Render Tree節(jié)點(diǎn)的寬度尤其是高度以后,需要相應(yīng)調(diào)整這個節(jié)點(diǎn)的前輩節(jié)點(diǎn)以及左鄰右舍兄弟節(jié)點(diǎn)的位置。當(dāng)重復(fù)請求同一頁面或刷新時,瀏覽器向服務(wù)器又發(fā)送一遍請求并下載相同資源,以及Layout完成后,布局出的效果是完全一樣的,但這一過程多做很多冗余的工作,頻繁占有系統(tǒng)資源,也會給用戶帶來瀏覽頁面不順暢的感覺。
發(fā)明內(nèi)容
為了克服上述缺陷,本發(fā)明提供一種基于WebKit的瀏覽器頁面顯示方法,包括I)向服務(wù)器發(fā)送頁面請求;2)從服務(wù)器下載頁面資源,下載的同時,WebKit中的布局管理器對所請求的頁面進(jìn)行布局渲染;3)在所述布局渲染完成后,繪制并顯示頁面。具體為在所述布局渲染完成后,觸發(fā)一個事件,該事件啟動繪制過程。所述布局渲染的步驟進(jìn)一步包括把從服務(wù)器返回的HTML文本解析生成DOM樹, 同時生成Render樹,使得DOM樹和Render樹是同時增長的。DOM樹和Render樹的生成步驟具體包括把DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS規(guī)定輸出的特性,由渲染器進(jìn)行視覺化表達(dá),生成Render樹。所述輸出的特性包括顏色、字體。其中,當(dāng)所請求的頁面中包含JavaScript腳本,并隨HTML文本一起從服務(wù)器返回到客戶端瀏覽器上時,所述HTML文本中的JavaScript腳本由JavaScriptCore解析并執(zhí)行。所述基于WebKit的瀏覽器頁面顯示方法進(jìn)一步包括步驟4)接收用戶對同一頁面的再次請求;5)判斷步驟2)中對頁面資源的下載是否完全;6)如果下載完全,則判斷所述下載時從服務(wù)器接收的expires字段設(shè)置的時間是否過期,以及判斷HTTP響應(yīng)期限是否超時,如果expires時間未過期、且兩次頁面請求之間的時間間隔未超過HTTP響應(yīng)期限,那么不向服務(wù)器發(fā)送再次下載頁面請求,而是返回成功狀態(tài),結(jié)束頁面請求流程;7)如果expires時間已過期、或者兩次頁面請求之間的時間間隔已超過HTTP響應(yīng)期限,那么向服務(wù)器發(fā)送再次下載頁面請求;8)向服務(wù)器發(fā)送上次下載頁面資源時接收的Last-Modified和Etag字段內(nèi)容;9)如果再次請求下載的頁面資源未被修改,則向布局管理器發(fā)送網(wǎng)頁未更新狀態(tài)消息,布局管理器根據(jù)該網(wǎng)頁未更新狀態(tài)消息,不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作;10)如果再次請求下載的頁面資源已被修改,則釋放內(nèi)存中已生成的DOM樹和Render樹,重新生成修改后的DOM樹和Render樹,并重新繪制頁面。其中,當(dāng)步驟4)中的對同一頁面的再次請求來自于F5快捷鍵刷新時,跳過對expires時間和HTTP響應(yīng)期限的判斷,當(dāng)下載完全時,直接向服務(wù)器發(fā)送再次下載頁面的請求。本發(fā)明還提供了一種基于WebKit的瀏覽器頁面顯示裝置,該裝置包括初次頁面請求模塊,用于向服務(wù)器發(fā)送頁面請求;初次頁面下載模塊,用于從服務(wù)器下載頁面資源;布局渲染模塊,用于在下載的同時,使得WebKit中的布局管理器對所請求的頁面進(jìn)行布局渲染;以及
繪制模塊,用于在所述布局渲染完成后,繪制并顯示頁面。所述繪制模塊進(jìn)一步包括觸發(fā)模塊,用于在所述布局渲染完成后,觸發(fā)一個事件,該事件啟動繪制過程。其中所述布局渲染模塊進(jìn)一步包括樹生成模塊,用于把從服務(wù)器返回的HTML文本解析生成DOM樹,同時生成Render樹,使得DOM樹和Render樹是同時增長的。所述樹生成模塊更具體地用于把DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS規(guī)定輸出的特性,由渲染器進(jìn)行視覺化表達(dá),生成Render樹。所述輸出的特性包括顏色、字體。其中,當(dāng)所請求的頁面中包含JavaScript腳本,并隨HTML文本一起從服務(wù)器返回到客戶端瀏覽器上時,所述HTML文本中的JavaScript腳本由JavaScriptCore解析并執(zhí)行。所述基于WebKit的瀏覽器頁面顯示裝置進(jìn)一步包括接收模塊,用于接收用戶對同一頁面的再次請求;
第一判斷模塊,用于判斷初次頁面下載模塊中對頁面資源的下載是否完全;成功狀態(tài)返回模塊,用于如果下載完全,則判斷所述下載時從服務(wù)器接收的expires字段設(shè)置的時間是否過期,以及判斷HTTP響應(yīng)期限是否超時,如果expires時間未過期、且兩次頁面請求之間的時間間隔未超過HTTP響應(yīng)期限,那么不向服務(wù)器發(fā)送再次下載頁面請求,而是返回成功狀態(tài),結(jié)束頁面請求流程;再次頁面請求模塊,用于如果expires時間已過期、或者兩次頁面請求之間的時間間隔已超過HTTP響應(yīng)期限,那么向服務(wù)器發(fā)送再次下載頁面請求;信息反饋模塊,用于向服務(wù)器發(fā)送上次下載頁面資源時接收的Last-Modified和Etag子段內(nèi)各;第二判斷模塊,用于如果再次請求下載的頁面資源未被修改,則向布局管理器發(fā)送網(wǎng)頁未更新狀態(tài)消息,布局管理器根據(jù)該網(wǎng)頁未更新狀態(tài)消息,不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作;重新繪制模塊,用于如果再次請求下載的頁面資源已被修改,則釋放內(nèi)存中已生成的DOM樹和Render樹,重新生成修改后的DOM樹和Render樹,并重新繪制頁面。其中,當(dāng)接收模塊中的對同一頁面的再次請求來自于F5快捷鍵刷新時,還包括特殊請求響應(yīng)模塊,用于跳過對expires時間和HTTP響應(yīng)期限的判斷,當(dāng)下載完全時,直接向服務(wù)器發(fā)送再次下載頁面的請求。瀏覽器從輸入網(wǎng)頁到網(wǎng)頁顯示的過程中,假設(shè)資源下載和布局管理器Layout的運(yùn)行一共需要花費(fèi)的時間為timel ;布局渲染完成后,通過事件觸發(fā)Paint,繪制頁面,這一過程需要花費(fèi)的時間為time2。若能控制timel或time2的值,就會對頁面的瀏覽性能有一定提升。本發(fā)明中,由于資源下載和布局管理器Layout是同時運(yùn)行的,因此能有效地控制timel的值。在使用嵌入式系統(tǒng)及性能一般的硬件環(huán)境的瀏覽器瀏覽頁面時,能夠減少用戶在使用過程中的不流暢感,從而優(yōu)化用戶的使用體驗。
此處的說明附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明中提供的附圖僅用于幫助理解本發(fā)明,并不對本發(fā)明進(jìn)行任何限定,附圖包括圖I從URL連接請求發(fā)送到下載進(jìn)程的過程
圖2WebKit體系結(jié)構(gòu)圖 圖3D0M樹和Render樹生成及對應(yīng)關(guān)系圖4依據(jù)本發(fā)明的優(yōu)化了的頁面刷新流程圖
具體實施例方式此部分將結(jié)合附圖,詳細(xì)說明本發(fā)明的實現(xiàn)過程。圖I示出了依據(jù)本發(fā)明的從瀏覽器輸入URL到向服務(wù)器發(fā)送連接請求這段期間的主要流程,先創(chuàng)建DocumentLoader對象,然后進(jìn)行安全策略處理,創(chuàng)建MainLoader對象,在設(shè)置下載請求后,對Expires字段和HTTP響應(yīng)期限進(jìn)行判斷,如果Expires字段沒有過期,且第二次請求和初次請求的請求間隔時間不超過HTTP響應(yīng)期限,則跳出請求流程,不做后續(xù)操作。 圖2示出了 WebKit結(jié)構(gòu)圖,當(dāng)服務(wù)器返回資源后,瀏覽器開始下載,此時進(jìn)入WebKit操作流程。WebKit中下載進(jìn)程下載資源并通知布局管理器Layout進(jìn)行布局渲染,布局管理器Layout通過DOM把HTML文本解析成DOM樹。當(dāng)用戶請求的網(wǎng)頁里面包含JavaScript腳本,并隨HTML文件一起傳送到客戶端瀏覽器上時,其中HTML文本中的JavaScript將由JavaScriptCore解析執(zhí)行。通過布局管理器Layout對DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS規(guī)定輸出的特性,比如顏色、字體等,由渲染器Render進(jìn)行視覺化表達(dá)。DOM樹和Render樹是同時增長的,參見圖3示例,布局渲染結(jié)束后,開始Paint繪制頁面。WebKit把具體繪制的工作,交給第三方圖形工具庫去完成。圖形庫就是根據(jù)Render樹進(jìn)行繪制的。圖3示出了 DOM樹和Render樹的生成及對應(yīng)關(guān)系。其中,DOM樹的Document對應(yīng)于 Render 樹的 RenderView, DOM 樹的 HTML 對應(yīng)于 Render 樹的 RenderBlock, DOM 樹的 Body對應(yīng)于 Render 樹的 RenderBody, DOM 樹的 Div 對應(yīng)于 Render 樹的子 RenderBlock, DOM 樹的 Canvas 對應(yīng)于 Render 樹的 RenderHTMLCanvas。圖2至圖3描述了依據(jù)本發(fā)明的基于WebKit瀏覽器的頁面下載的內(nèi)部細(xì)節(jié),圖4示出了依據(jù)本發(fā)明的優(yōu)化了的頁面刷新流程。瀏覽器第一次請求某一頁面時,如果訪問順利,服務(wù)器將返回請求成功的狀態(tài)200,并發(fā)送給瀏覽器一些信息HTTP/x. X 2000KServer XXXLast-Modified =XXXXXX (最后一次修改時間)Etag:“XXXX”(資源的唯一狀態(tài)標(biāo)識)Expires = XXXXXX (指定資源在瀏覽器緩存中的過期時間)瀏覽器在接收到這些信息后,開始下載網(wǎng)頁資源,并保存在本地目錄中,與此同時,WebKit中的布局管理器Layout開始布局渲染,在渲染完成后,對頁面進(jìn)行繪制。優(yōu)化之前,當(dāng)瀏覽器第二次請求同一頁面時,WebKit的布局管理器Layout會先釋放之前內(nèi)存中生成完全的DOM樹和Render樹,重新讀取本地資源,重新生成DOM樹和Render樹,再觸發(fā)事件開始Paint操作。優(yōu)化之后,設(shè)置HTTP響應(yīng)頭使其HTTP響應(yīng)期限為X分鐘(10〈X〈50,例如設(shè)置為30分鐘),當(dāng)瀏覽器第二次請求同一頁面時,瀏覽器創(chuàng)建MainLoader對象,設(shè)置下載請求;判斷上一次資源下載的狀態(tài)和下載超時的狀況,如果上一次資源下載完全而不是下載超時退出,那么獲取上次資源下載時從服務(wù)器接收的Expires字段;判斷服務(wù)器給此Expires字段設(shè)置的時間是否過期,如果時間已過期則讀取請求協(xié)議頭文件,進(jìn)入請求下載流程;如果時間未過期,則獲取HTTP響應(yīng)期限,判斷兩次頁面請求之間的時間間隔是否超過HTTP響應(yīng)期限,如果響應(yīng)期限已超時,則進(jìn)入請求下載流程;如果響應(yīng)期限沒有超時,則不創(chuàng)建資源請求消息,不向服務(wù)器發(fā)送下載請求,并返回成功狀態(tài),結(jié)束瀏覽器請求流程。也就是說,如果Expires字段設(shè)置的時間已過期,或者Expires字段設(shè)置的時間沒有過期但兩次頁面請求的間隔時間超過了 HTTP響應(yīng)期限,則瀏覽器創(chuàng)建資源請求消息,并向服務(wù)器發(fā)送HTTP請求,進(jìn)入請求下載流程。請求下載流程包括發(fā)送上次資源下載時接收的Last-Modified和Etag字段內(nèi)容;如果請求下載的資源未被修改,服務(wù)器將返回304狀態(tài)碼(HTTP/x. X 304NotModified),內(nèi)容為空,此時瀏覽器創(chuàng)建的下載進(jìn)程不做下載動作,而是向布局管理器 Layout發(fā)送網(wǎng)頁未更新狀態(tài)消息;發(fā)送網(wǎng)頁未更新狀態(tài)消息成功后,下載進(jìn)程退出;布局管理器Layout接收到下載進(jìn)程發(fā)送的網(wǎng)頁未更新狀態(tài)消息,則不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作。如果請求下載的資源有變化(被修改),那么服務(wù)器將不會返回304狀態(tài)碼。此時,執(zhí)行刷新流程。這里的刷新流程包括釋放內(nèi)存中之前生成的DOM樹和Render樹,重新生成修改后的DOM樹和Render樹,并重新繪制頁面。該刷新流程與本發(fā)明所述的第一次網(wǎng)頁請求的流程類似,在本地瀏覽器下載資源的同時把內(nèi)容傳給布局管理器Layout進(jìn)行布局和渲染。通過F5快捷鍵刷新頁面時,情況有所不同該流程獲取上次資源下載的狀態(tài),判斷資源下載是否完全,是否下載超時退出;但不判斷Expires字段和HTTP響應(yīng)期限,而是直接向服務(wù)器發(fā)送HTTP請求,進(jìn)入F5鍵刷新模式下的請求下載流程。該請求下載流程具體包括發(fā)送上次資源下載時所接收的LastModified和Etag字段內(nèi)容;如果請求下載的資源未被修改,服務(wù)器會返回304狀態(tài)碼(HTTP/x. X 304Not Modified),內(nèi)容為空,此時瀏覽器創(chuàng)建的下載進(jìn)程不做下載動作,而是向布局管理器Layout發(fā)送網(wǎng)頁未更新狀態(tài)消息,發(fā)送網(wǎng)頁未更新狀態(tài)消息成功后,下載進(jìn)程退出;布局管理器Layout接收到下載進(jìn)程發(fā)送的網(wǎng)頁未更新狀態(tài)消息,則不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作。應(yīng)當(dāng)知道,瀏覽器第一次向服務(wù)器請求獲取頁面資源時,服務(wù)器會返回請求成功的狀態(tài)200,接著瀏覽器創(chuàng)建下載進(jìn)程進(jìn)行頁面資源下載。如果網(wǎng)絡(luò)等原因?qū)е沦Y源下載不順利、不完全,下載進(jìn)程定時器時間完成,則會返回下載超時狀態(tài),布局管理器會根據(jù)已有的下載內(nèi)容進(jìn)行布局排版及繪制。當(dāng)?shù)诙握埱蠹虞d或F5刷新頁面時,瀏覽器獲取上次資源下載狀態(tài)為下載超時,則重新向服務(wù)器發(fā)送下載請求,重新獲取資源,重新布局渲染及繪制,保證瀏覽器頁面顯示完整內(nèi)容。這樣的處理流程可以使嵌入式系統(tǒng)或性能不強(qiáng)的硬件環(huán)境中的WebKit瀏覽器,在多次加載或F5刷新頁面時性能提升,用戶體驗良好,并保證優(yōu)化后的頁面資源的完整。
以上是對本發(fā)明的優(yōu)選實施例進(jìn)行的詳細(xì)描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該意識到,在本發(fā)明的范圍內(nèi)和精神指導(dǎo)下,各種改進(jìn)、添加和替換都是可能的,例如調(diào)整接口調(diào)用順序、改變消息格式和內(nèi)容、使用不同的編程語言(如C、C++、Java等)實現(xiàn)等。這些都在本發(fā)明的權(quán)利要求所限定的保護(hù)范圍內(nèi)?!?br>
權(quán)利要求
1.一種基于WebKit的瀏覽器頁面顯示方法,其特征在于,該方法包括以下步驟 O向服務(wù)器發(fā)送頁面請求; 2)從服務(wù)器下載頁面資源,下載的同時,WebKit中的布局管理器對所請求的頁面進(jìn)行布局渲染; 3)在所述布局渲染完成后,繪制并顯示頁面。
2.如權(quán)利要求I所述的方法,所述布局渲染的步驟進(jìn)一步包括 把從服務(wù)器返回的HTML文本解析生成DOM樹,同時生成Render樹,使得DOM樹和Render樹是同時增長的。
3.如權(quán)利要求I所述的方法,其中,當(dāng)所請求的頁面中包含JavaScript腳本,并隨HTML文本一起從服務(wù)器返回到客戶端瀏覽器上時,所述HTML文本中的JavaScript腳本由JavaScriptCore解析并執(zhí)行。
4.如權(quán)利要求2所述的方法,其中DOM樹和Render樹的生成步驟具體包括 把DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS規(guī)定輸出的特性,由渲染器進(jìn)行視覺化表達(dá),生成Render樹。
5.如權(quán)利要求4所述的方法,其中所述輸出的特性包括顏色、字體。
6.如權(quán)利要求I所述的方法,所述步驟3)具體包括 在所述布局渲染完成后,觸發(fā)一個事件,該事件啟動繪制過程。
7.如權(quán)利要求I所述的方法,進(jìn)一步包括步驟 4)接收用戶對同一頁面的再次請求; 5)判斷步驟2)中對頁面資源的下載是否完全; 6)如果下載完全,則判斷所述下載時從服務(wù)器接收的expires字段設(shè)置的時間是否過期,以及判斷HTTP響應(yīng)期限是否超時,如果expires時間未過期、且兩次頁面請求之間的時間間隔未超過HTTP響應(yīng)期限,那么不向服務(wù)器發(fā)送再次下載頁面請求,而是返回成功狀態(tài),結(jié)束頁面請求流程; 7)如果expires時間已過期、或者兩次頁面請求之間的時間間隔已超過HTTP響應(yīng)期限,那么向服務(wù)器發(fā)送再次下載頁面請求。
8.如權(quán)利要求7所述的方法,進(jìn)一步包括 8)向服務(wù)器發(fā)送上次下載頁面資源時接收的Last-Modified和Etag字段內(nèi)容; 9)如果再次請求下載的頁面資源未被修改,則向布局管理器發(fā)送網(wǎng)頁未更新狀態(tài)消息,布局管理器根據(jù)該網(wǎng)頁未更新狀態(tài)消息,不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作; 10)如果再次請求下載的頁面資源已被修改,則釋放內(nèi)存中已生成的DOM樹和Render樹,重新生成修改后的DOM樹和Render樹,并重新繪制頁面。
9.如權(quán)利要求7所述的方法,其中,當(dāng)步驟4)中的對同一頁面的再次請求來自于F5快捷鍵刷新時,跳過對expires時間和HTTP響應(yīng)期限的判斷,當(dāng)下載完全時,直接向服務(wù)器發(fā)送再次下載頁面的請求。
10.一種基于WebKit的瀏覽器頁面顯示裝置,其特征在于,該裝置包括 初次頁面請求模塊,用于向服務(wù)器發(fā)送頁面請求; 初次頁面下載模塊,用于從服務(wù)器下載頁面資源;布局渲染模塊,用于在下載的同時,使得WebKit中的布局管理器對所請求的頁面進(jìn)行布局渲染;以及 繪制模塊,用于在所述布局渲染完成后,繪制并顯示頁面。
11.如權(quán)利要求10所述的裝置,其中所述布局渲染模塊進(jìn)一步包括 樹生成模塊,用于把從服務(wù)器返回的HTML文本解析生成DOM樹,同時生成Render樹,使得DOM樹和Render樹是同時增長的。
12.如權(quán)利要求10所述的裝置,其中,當(dāng)所請求的頁面中包含JavaScript腳本,并隨HTML文本一起從服務(wù)器返回到客戶端瀏覽器上時,所述HTML文本中的JavaScript腳本由JavaScriptCore解析并執(zhí)行。
13.如權(quán)利要求11所述的裝置,其中樹生成模塊具體用于 把DOM樹中的可視元素排版,分配位置、高度、寬度,再由CSS規(guī)定輸出的特性,由渲染器進(jìn)行視覺化表達(dá),生成Render樹。
14.如權(quán)利要求13所述的裝置,其中所述輸出的特性包括顏色、字體。
15.如權(quán)利要求10所述的裝置,所述繪制模塊具體包括 觸發(fā)模塊,用于在所述布局渲染完成后,觸發(fā)一個事件,該事件啟動繪制過程。
16.如權(quán)利要求10所述的裝置,進(jìn)一步包括 接收模塊,用于接收用戶對同一頁面的再次請求; 第一判斷模塊,用于判斷初次頁面下載模塊中對頁面資源的下載是否完全; 成功狀態(tài)返回模塊,用于如果下載完全,則判斷所述下載時從服務(wù)器接收的expires字段設(shè)置的時間是否過期,以及判斷HTTP響應(yīng)期限是否超時,如果expires時間未過期、且兩次頁面請求之間的時間間隔未超過HTTP響應(yīng)期限,那么不向服務(wù)器發(fā)送再次下載頁面請求,而是返回成功狀態(tài),結(jié)束頁面請求流程; 再次頁面請求模塊,用于如果expires時間已過期、或者兩次頁面請求之間的時間間隔已超過HTTP響應(yīng)期限,那么向服務(wù)器發(fā)送再次下載頁面請求。
17.如權(quán)利要求16所述的裝置,進(jìn)一步包括 信息反饋模塊,用于向服務(wù)器發(fā)送上次下載頁面資源時接收的Last-Modified和Etag字段內(nèi)容; 第二判斷模塊,用于如果再次請求下載的頁面資源未被修改,則向布局管理器發(fā)送網(wǎng)頁未更新狀態(tài)消息,布局管理器根據(jù)該網(wǎng)頁未更新狀態(tài)消息,不釋放內(nèi)存中已生成的DOM樹和Render樹,而是直接觸發(fā)啟動繪制過程的事件,進(jìn)行頁面繪制操作; 重新繪制模塊,用于如果再次請求下載的頁面資源已被修改,則釋放內(nèi)存中已生成的DOM樹和Render樹,重新生成修改后的DOM樹和Render樹,并重新繪制頁面。
18.如權(quán)利要求16所述的裝置,其中,當(dāng)接收模塊中的對同一頁面的再次請求來自于F5快捷鍵刷新時,還包括特殊請求響應(yīng)模塊,用于跳過對expires時間和HTTP響應(yīng)期限的判斷,當(dāng)下載完全時,直接向服務(wù)器發(fā)送再次下載頁面的請求。
全文摘要
本發(fā)明公開了一種基于WebKit的瀏覽器頁面顯示方法及其裝置。該方法包括步驟1)向服務(wù)器發(fā)送頁面請求;2)本次請求的資源在本機(jī)如果有緩存且未過期則直接布局渲染,如果沒有,從服務(wù)器下載頁面資源,下載的同時,WebKit中的布局管理器對所請求的頁面進(jìn)行布局渲染;3)在所述布局渲染完成后,繪制并顯示頁面。本發(fā)明在使用嵌入式系統(tǒng)及性能一般的硬件環(huán)境的瀏覽器瀏覽頁面時,能夠減少頁面下載時間,減少用戶在使用過程中的不流暢感,優(yōu)化用戶體驗。
文檔編號G06F17/30GK102902799SQ201210385099
公開日2013年1月30日 申請日期2012年10月12日 優(yōu)先權(quán)日2012年10月12日
發(fā)明者陳宇, 鄢斌 申請人:中科方德軟件有限公司, 中國科學(xué)院軟件研究所