TWI569204B - web瀏覽器中之指令碼之預處理 - Google Patents
web瀏覽器中之指令碼之預處理 Download PDFInfo
- Publication number
- TWI569204B TWI569204B TW102122788A TW102122788A TWI569204B TW I569204 B TWI569204 B TW I569204B TW 102122788 A TW102122788 A TW 102122788A TW 102122788 A TW102122788 A TW 102122788A TW I569204 B TWI569204 B TW I569204B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction code
- instruction
- html file
- engine
- html
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Description
本申請案主張以下申請案之優先權之權利:2012年8月17日申請之題為「Pre-Processing of Scripts in Web Browsers」之美國臨時專利申請案第61/684,594號及2012年8月16日申請之題為「Pre-Processing of Scripts in Web Browsers」之美國臨時專利申請案第61/683,999號,該兩個專利申請案之全部內容藉此以引用之方式併入本文中。
本發明係關於用於在web瀏覽器中顯現HTML文件之方法、系統及裝置,且更特定言之,係關於將web瀏覽器操作並行化之方法。
無線通信技術及行動電子裝置(例如,蜂巢式電話、平板電腦、膝上型電腦等)已在過去的若干年內在風行度及使用方面增長。為跟上增加之消費者需求,行動電子裝置已變得富含更多特徵,且現通常包括多個處理器、系統單晶片(SoC)及允許行動裝置使用者在其行動裝置上執行複雜及功率密集型軟體應用程式(例如,web瀏覽器、視訊串流應用程式等)的其他資源。歸因於此等及其他改良,智慧型電話及平板電腦已在風行度方面增長,且正代替膝上型電腦及桌上型電腦機器以作為許多使用者之選擇平台。
行動裝置使用者現可藉由經由其行動裝置上之瀏覽器應用程式存取網際網路來容易地且便利地實現許多其日常任務。隨著行動裝置
之風行度繼續增長,能夠更好地利用現代行動裝置之多重處理能力的web瀏覽器將為消費者所要的。
各種態樣包括準備一HTML文件中所包括之指令碼的方法,該等方法可包括:掃描該HTML文件以發現複數個指令碼;將該複數個指令碼發送至一指令碼引擎;在該指令碼引擎準備該複數個指令碼以用於執行時,剖析該HTML文件;自該複數個指令碼中識別待執行之一下一指令碼;將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎;暫時中止對該HTML文件之該剖析;接收指示已執行待執行之該所識別之下一指令碼的一通知;及回應於接收到該通知而恢復執行對該HTML文件之該剖析。在一態樣中,將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該所識別之下一指令碼發送至該指令碼引擎。
在一態樣中,該方法可包括產生該複數個指令碼中之每一者之一識別符。在另一態樣中,將該複數個指令碼發送至一指令碼引擎可包括將該複數個指令碼及該等識別符發送至該指令碼引擎,且將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該下一指令碼之該識別符發送至該指令碼引擎。在另一態樣中,產生該複數個指令碼中之每一者之一識別符可包括使至少一指令碼與一統一資源識別符(URI)相關聯。在另一態樣中,產生該複數個指令碼中之每一者之一識別符可包括產生至少一指令碼之一簽章。在另一態樣中,產生該複數個指令碼中之每一者之一識別符可包括產生可包括至少一指令碼之文字之至少一識別符。
在另一態樣中,掃描一HTML文件以發現複數個指令碼可包括在一第一處理器中掃描該HTML文件,且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括在一第二處理器中剖析
該HTML文件。在另一態樣中,掃描一HTML文件以發現複數個指令碼可包括藉由在一處理器中執行之一第一處理程序掃描該HTML文件,且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括藉由在該處理器中執行之一第二處理程序剖析該HTML文件。
在另一態樣中,在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括:在該指令碼引擎剖析、分析及編譯一第一指令碼且並行地該指令碼引擎剖析、分析及編譯一第二指令碼時,剖析該HTML文件。在另一態樣中,在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括:在該指令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時,剖析該HTML文件。在另一態樣中,自該複數個指令碼中識別待執行之一下一指令碼可包括基於一所定義之執行次序而識別待執行之該下一指令碼。
其他態樣包括一種計算裝置,其可包括:用於掃描一HTML文件以發現複數個指令碼之構件;用於將該複數個指令碼發送至一指令碼引擎之構件;用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件;用於自該複數個指令碼中識別待執行之一下一指令碼的構件;用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件;用於暫時中止對該HTML文件之該剖析的構件;用於接收指示已執行待執行之該所識別之下一指令碼的一通知的構件;及用於回應於接收到該通知而恢復執行對該HTML文件之該剖析的構件。
在一態樣中,用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件可包括用於將待執行之該所識別之下一指令碼發送至該指令碼引擎的構件。在另一態樣中,該計算裝置可
包括用於產生該複數個指令碼中之每一者之一識別符的構件。在另一態樣中,用於將該複數個指令碼發送至一指令碼引擎之構件可包括用於將該複數個指令碼及該等識別符發送至該指令碼引擎之構件,且用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件可包括用於將待執行之該下一指令碼之該識別符發送至該指令碼引擎的構件。在另一態樣中,用於產生該複數個指令碼中之每一者之一識別符的構件可包括用於使至少一指令碼與一統一資源識別符(URI)相關聯之構件。在另一態樣中,用於產生該複數個指令碼中之每一者之一識別符的構件可包括用於產生至少一指令碼之一簽章的構件。在另一態樣中,用於產生該複數個指令碼中之每一者之一識別符的構件可包括用於產生可包括至少一指令碼之文字之至少一識別符的構件。
在另一態樣中,用於掃描一HTML文件以發現複數個指令碼之構件可包括用於在一第一處理器中掃描該HTML文件之構件,且用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件可包括用於在一第二處理器中剖析該HTML文件之構件。在另一態樣中,用於掃描一HTML文件以發現複數個指令碼之構件可包括用於藉由在一處理器中執行之一第一處理程序掃描該HTML文件的構件,且用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件可包括用於藉由在該處理器中執行之一第二處理程序剖析該HTML文件的構件。
在另一態樣中,用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件可包括用於在該指令碼引擎剖析、分析及編譯一第一指令碼且並行地該指令碼引擎剖析、分析及編譯一第二指令碼時剖析該HTML文件的構件。在另一態樣中,用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件
可包括用於在該指令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時剖析該HTML文件的構件。在另一態樣中,用於自該複數個指令碼中識別待執行之一下一指令碼的構件可包括用於基於一所定義之執行次序而識別待執行之該下一指令碼的構件。
其他態樣包括一種計算裝置,其可包括一處理器,該處理器組態有用以執行操作之處理器可執行指令,該等操作可包括:掃描一HTML文件以發現複數個指令碼;將該複數個指令碼發送至一指令碼引擎;在該指令碼引擎準備該複數個指令碼以用於執行時,剖析該HTML文件;自該複數個指令碼中識別待執行之一下一指令碼;將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎;暫時中止對該HTML文件之該剖析;接收指示已執行待執行之該所識別之下一指令碼的一通知;及回應於接收到該通知而恢復執行對該HTML文件之該剖析。
在一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該所識別之下一指令碼發送至該指令碼引擎。在另一態樣中,其中該處理器可組態有處理器可執行指令以執行進一步包括產生該複數個指令碼中之每一者之一識別符的操作,且其中該處理器可組態有處理器可執行指令以執行操作,使得將該複數個指令碼發送至該指令碼引擎可包括將該複數個指令碼及該等識別符發送至該指令碼引擎,且將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該下一指令碼之該識別符發送至該指令碼引擎。
在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括使至少一
指令碼與一統一資源識別符(URI)相關聯。在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括產生至少一指令碼之一簽章。在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括產生可包括至少一指令碼之文字之至少一識別符。
在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得掃描一HTML文件以發現複數個指令碼可包括藉由在一處理器中執行之一第一處理程序掃描該HTML文件,且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括藉由在該處理器中執行之一第二處理程序剖析該HTML文件。在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得準備該複數個指令碼以用於執行可包括該第二處理程序剖析、分析及編譯一第一指令碼且並行地剖析、分析及編譯一第二指令碼。
在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得在該指令碼引擎準備該複數個指令碼以用於並行執行時剖析該HTML文件可包括:在該指令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時,剖析該HTML文件。在另一態樣中,該處理器可組態有處理器可執行指令以執行操作,使得自該複數個指令碼中識別待執行之一下一指令碼可包括基於一所定義之執行次序而識別待執行之該下一指令碼。
其他態樣包括一種非暫時性電腦可讀儲存媒體,其上儲存有處理器可執行軟體指令,該等處理器可執行軟體指令經組態以使得一處理器執行用於準備一HTML文件中所包括之指令碼的操作,該等操作包括:掃描該HTML文件以發現複數個指令碼;將該複數個指令碼發送至一指令碼引擎;在該指令碼引擎準備該複數個指令碼以用於執行
時,剖析該HTML文件;自該複數個指令碼中識別待執行之一下一指令碼;將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎;暫時中止對該HTML文件之該剖析;接收指示已執行待執行之該所識別之下一指令碼的一通知;及回應於接收到該通知而恢復執行對該HTML文件之該剖析。在一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該所識別之下一指令碼發送至該指令碼引擎。
在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行包括產生該複數個指令碼中之每一者之一識別符的操作,且其中該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得將該複數個指令碼發送至一指令碼引擎可包括將該複數個指令碼及該等識別符發送至該指令碼引擎,且將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎可包括將待執行之該下一指令碼之該識別符發送至該指令碼引擎。在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括使至少一指令碼與一統一資源識別符(URI)相關聯。
在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括產生至少一指令碼之一簽章。在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得產生該複數個指令碼中之每一者之一識別符可包括產生可包括至少一指令碼之文字之至少一識別符。
在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得掃描一HTML文件以發現複數個指令
碼可包括藉由在一處理器中執行之一第一處理程序掃描該HTML文件,且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件可包括藉由在該處理器中執行之一第二處理程序剖析該HTML文件。在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得準備該複數個指令碼以用於執行可包括該第二處理程序剖析、分析及編譯一第一指令碼且並行地剖析、分析及編譯一第二指令碼。
在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得在該指令碼引擎準備該複數個指令碼以用於並行執行時剖析該HTML文件可包括:在該指令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時,剖析該HTML文件。在另一態樣中,該等所儲存之處理器可執行軟體指令可經組態以使得一處理器執行操作,使得自該複數個指令碼中識別待執行之一下一指令碼可包括基於一所定義之執行次序而識別待執行之該下一指令碼。
100‧‧‧系統單晶片(SOC)
102‧‧‧數位信號處理器(DSP)
104‧‧‧數據機處理器
106‧‧‧圖形處理器
108‧‧‧應用處理器
110‧‧‧共處理器
112‧‧‧記憶體元件
114‧‧‧定製電路
116‧‧‧系統組件及資源
118‧‧‧時鐘
120‧‧‧電壓調節器
124‧‧‧互連件/匯流排模組
202‧‧‧多核心處理器
204‧‧‧處理核心
206‧‧‧處理核心
208‧‧‧處理單元
210‧‧‧處理單元
212‧‧‧層1(L1)快取記憶體
214‧‧‧層1(L1)快取記憶體
216‧‧‧層2(L2)快取記憶體
218‧‧‧匯流排/互連介面
220‧‧‧主記憶體
222‧‧‧輸入/輸出模組
224‧‧‧硬碟記憶體
226‧‧‧層2(L2)快取記憶體
230‧‧‧處理核心
232‧‧‧處理核心
234‧‧‧處理單元
236‧‧‧處理單元
238‧‧‧層1(L1)快取記憶體
240‧‧‧層1(L1)快取記憶體
242‧‧‧層2(L2)快取記憶體
300‧‧‧載入及顯現HTML文件之態樣瀏覽器方法
350‧‧‧瀏覽器系統
352‧‧‧Web
356‧‧‧程式設計指令
360‧‧‧HTML程式碼
362‧‧‧指令碼組件
366‧‧‧文件物件模型(DOM)
370‧‧‧經修改之DOM樹
374‧‧‧頁面佈局
378‧‧‧HTML文件之內容
380‧‧‧外部模組
500‧‧‧瀏覽器系統
502‧‧‧提取管理器組件
504‧‧‧DOM分派器組件
506‧‧‧HTML剖析器組件
508‧‧‧HTML預掃描器組件
510‧‧‧影像解碼組件
512‧‧‧CSS引擎組件
514‧‧‧JavaScript®引擎組件
516‧‧‧佈局及顯現引擎組件
518‧‧‧使用者介面組件
520‧‧‧CSS資源預先提取器組件
522‧‧‧CSS剖析器組件
524‧‧‧DOM樣式器組件
526‧‧‧輕型編譯器
528‧‧‧完整編譯器
530‧‧‧沙箱JavaScript®引擎組件
552‧‧‧使用者介面子系統
554‧‧‧資源管理器子系統
556‧‧‧每頁DOM引擎子系統
558‧‧‧每頁JavaScript®引擎子系統
560‧‧‧顯現引擎子系統
562‧‧‧預先提取操作
563‧‧‧HTML預掃描操作
564‧‧‧影像解碼操作
566‧‧‧CSS掃描/預先提取操作
567‧‧‧JavaScript掃描/預先提取操作
568‧‧‧HTML剖析操作
570‧‧‧CSS剖析操作
572‧‧‧計時器操作
574‧‧‧樣式化操作
576‧‧‧用以管理事件之操作
578‧‧‧JavaScript®執行操作
580‧‧‧JavaScript®編譯操作
582‧‧‧佈局操作
584‧‧‧顯現操作
600‧‧‧處理HTML文件以發現適當地顯現網頁所需之外部資源(影像、音訊、CSS、JavaScript®等)及在頁面載入/顯現操作之前預先提取所發現之資源的態樣瀏覽器方法
700‧‧‧使用推測技術及試探法來發現文件資源以用於推測性下載之態樣瀏覽器方法
730‧‧‧藉由在沙箱JavaScript®引擎中並行地處理指令碼來推測性地並行地預先提取資源之態樣方法
750‧‧‧智慧地準備HTML文件中所包括之指令碼以用於並行執行的態樣瀏覽器方法
800‧‧‧處理經預先提取之資源的態樣瀏覽器方法
902‧‧‧CSS資源預先提取操作
904‧‧‧CSS剖析操作
906‧‧‧DOM樣式化操作
1000‧‧‧實施例並行DOM樣式化方法
1200‧‧‧行動電話
1201‧‧‧處理器
1202‧‧‧內部記憶體
1203‧‧‧顯示器
1204‧‧‧天線
1205‧‧‧無線收發器
1206‧‧‧選單選擇按鈕或搖臂開關
1208‧‧‧揚聲器
1213‧‧‧聲音編碼/解碼(CODEC)電路
1300‧‧‧伺服器
1301‧‧‧處理器
1302‧‧‧揮發性記憶體
1303‧‧‧磁碟機
1305‧‧‧網路
1306‧‧‧網路存取埠
1311‧‧‧軟碟驅動器、緊密光碟(CD)或DVD光碟驅動器
1400‧‧‧個人膝上型電腦
1401‧‧‧處理器
1402‧‧‧揮發性記憶體
1403‧‧‧磁碟機
1404‧‧‧緊密光碟(CD)及/或DVD驅動器
1405‧‧‧網路連接電路
1408‧‧‧鍵盤
1409‧‧‧顯示器
1410‧‧‧滑鼠
併入於本文中且構成本說明書之部分的隨附圖式說明本發明之例示性態樣。該等圖式與上文給出之一般描述及下文給出之詳細描述一起用以解釋本發明之特徵,且並不限制所揭示之態樣。
圖1為說明可用於實施各種態樣之計算裝置中之實例系統單晶片(SOC)架構的組件方塊圖。
圖2為說明可用以實施各種態樣之實例多核心處理器架構之功能方塊圖。
圖3A為說明用於顯現HTML文件之態樣瀏覽器方法之處理程序流程圖。
圖3B為說明態樣瀏覽器系統中之實例邏輯組件、資訊流程、操
作及變換的功能及處理程序流程圖。
圖4為說明態樣瀏覽器系統中之實例邏輯組件、功能組件、資訊流程及子系統的功能方塊圖。
圖5為說明根據一態樣之實施並行瀏覽器基礎結構之態樣瀏覽器系統的功能方塊圖。
圖6為說明在頁面載入/顯現操作之前處理HTML文件以發現並預先提取資源之態樣瀏覽器方法的處理程序流程圖。
圖7A為說明使用推測技術及試探法預測文件資源之使用情況之態樣瀏覽器方法的處理程序流程圖。
圖7B為說明並行地推測性地預先提取資源之態樣瀏覽器方法之處理程序流程圖。
圖7C為說明並行地預處理指令碼之態樣瀏覽器方法之處理程序流程圖。
圖8為說明處理經預先提取之資源之態樣瀏覽器方法的處理程序流程圖。
圖9為說明適於供各種態樣使用之CSS引擎中之實例功能組件的功能方塊圖。
圖10為說明用於並行地對若干節點執行規則匹配及串接操作之態樣樣式化方法的處理程序流程圖。
圖11A為適於用於各種態樣中之實例文件物件模型(DOM)樹之說明。
圖11B為對應於圖11A中所說明之DOM樹之任務定向非循環圖(DAG)的說明。
圖12為適於供各種態樣使用之實例行動裝置之組件方塊圖。
圖13為適於供各種態樣使用之實例伺服器之組件方塊圖。
圖14為適於實施各種態樣之膝上型電腦之組件方塊圖。
將參看隨附圖式詳細描述各種態樣。在任何可能之情況下,將貫穿諸圖式使用相同參考數字來指代相同或相似部分。對特定實例及實施的參考係為了說明性目的,且並不意欲限制本發明或申請專利範圍之範疇。
web瀏覽器為複雜軟體應用程式,其實施多個標準、需要支援舊版行為且為高度動態的及互動式。web瀏覽器設計者大體上旨在達成以下三者之最佳混合以提供良好之使用者體驗:用於頁面載入之快速回應時間(甚至在存在長網路潛時之情況下);高效能(例如,使得能夠達成web應用程式之互動功能);及高使用者介面回應性。
各種態樣提供web瀏覽器、瀏覽器方法及瀏覽器系統,其經組態以經由採用藉由現代多處理器行動裝置架構實現之同時性/並行性之技術達成快速回應時間、高效能及高使用者介面回應性。
超文字標示語言(HTML)程式碼既可為嵌入式JavaScript®程式碼(稱為「內嵌指令碼」),亦可包括至JavaScript®程式碼之連結(稱為「外部指令碼」)。為了正確地處理HTML文件,通常以由HTML標準定義之特定次序來執行內嵌指令碼與外部指令碼兩者。亦即,該等標準需要維持指令碼之最終執行次序。
各種態樣方法及瀏覽器可經組態以並行地及/或無序地下載、剖析、分析及編譯指令碼,及以標準所需之最終執行次序來執行指令碼。
大體上,實際上並非執行HTML文件中所包括(亦即,嵌入於HTML文件中或連結至HTML文件)之所有指令碼,且提前準備所有指令碼以用於執行可浪費功率及處理資源。各種態樣智慧地選擇待準備以用於執行之指令碼。
當多個指令碼經並行地下載、剖析、分析及編譯時,該等指令
碼變得準備好執行之次序可不同於由HTML標準定義之特定執行次序。若一指令碼未準備好執行,但該指令碼為由HTML標準定義之特定執行次序中的下一指令碼,則可能需要瀏覽器在執行對HTML文件之任何額外處理之前等待直至該指令碼變得準備好執行為止。各種態樣利用此等待時間來準備其他指令碼或資源以用於執行(其並非藉由HTML標準來調節)。可並行地及/或在其他指令碼之執行期間準備多個指令碼及資源。
詞「例示性」在本文中用以意謂「充當一實例、例子或說明」。本文中描述為「例示性」之任何實施未必應被解釋為相較於其他實施而言較佳或有利。
術語「行動裝置」及「計算裝置」在本文中可互換地使用以指代以下各者中之任一者或全部:蜂巢式電話、智慧型電話、個人或行動多媒體播放器、個人資料助理(PDA)、膝上型電腦、平板電腦、智慧本、掌上型電腦、無線電子郵件接收器、多媒體網際網路允用蜂巢式電話、無線遊戲控制器,及包括可程式化處理器及記憶體之類似個人電子裝置。雖然各種態樣特別適用於可能具有有限處理能力之行動裝置(諸如,蜂巢式電話)中,但該等態樣大體上適用於執行以動態語言、指令碼語言及/或標示語言撰寫之指令碼及/或應用程式的任何計算裝置中。
術語「系統單晶片」(SOC)在本文中用以指代含有整合於單一基板上之多個資源及/或處理器的單一積體電路(IC)晶片。單一SOC可含有用於數位、類比、混合信號及射頻功能之電路。單一SOC亦可包括任何數目個通用及/或專用處理器(數位信號處理器、數據機處理器、視訊處理器等)、記憶體區塊(例如,ROM、RAM、快閃記憶體等)及資源(例如,計時器、電壓調節器、振盪器等)。SOC亦可包括用於控制整合資源及處理器以及用於控制周邊裝置之軟體。
術語「多核心處理器」在本文中用以指代含有經組態以讀取並執行程式指令之兩個或兩個以上獨立處理核心(例如,CPU核心)的單一積體電路(IC)晶片或晶片封裝。一SOC可包括多個多核心處理器,且可將一SOC中之每一處理器稱作核心。術語「多處理器」在本文中用以指代包括經組態以讀取並執行程式指令之兩個或兩個以上處理單元的系統或裝置。
如本申請案中所使用,術語「組件」、「模組」、「系統」、「引擎」、「管理器」及其類似者意欲包括電腦相關實體,諸如(但不限於)硬體、韌體、硬體與軟體之組合、軟體或執行中之軟體,其經組態以執行特定操作或功能。舉例而言,組件可為(但不限於)在處理器上執行之處理程序、處理器、物件、可執行程式、執行緒、程式及/或電腦。藉由說明,可將在計算裝置上執行之應用程式與計算裝置兩者稱作組件。一或多個組件可駐留於處理程序及/或執行緒內且一組件可限定於一處理器或核心上及/或分佈於兩個或兩個以上處理器或核心之間。另外,此等組件可自儲存有各種指令及/或資料結構之各種非暫時性電腦可讀媒體執行。組件可藉由本端及/或遠端處理程序、函式或程序呼叫、電子信號、資料封包、記憶體讀取/寫入及其他已知之電腦、處理器及/或處理程序相關通信方法通信。
術語「應用程式設計介面」及其首字母縮略詞「API」一般地在本申請案中用以指代可由第一軟體組件使用以與第二軟體組件通信之任何軟體介面。API可包括用於常式、程序、函式、方法、資料結構、物件類別及變數之規範。API亦可包括用於將API映射至另一高階程式設計語言之特徵(語法或語義)的設施。此等設施及/或映射自身可為API,且被稱為「語言繫結」或「繫結」。
術語「標示語言」一般地在本申請案中用以指代用於註釋文字使得處理器可依照語法來區分該等註釋與文字的任何程式設計語言及
/或系統。標示語言之實例包括Scribe、標準通用標示語言(SGML)、超文字標示語言(HTML)、可延伸性標示語言(XML)及可延伸性超文字標示語言(XHTML)。
術語「動態語言」及「指令碼語言」在本申請案中可一般地且互換地用以指代任何動態語言、指令碼語言或用以撰寫在執行階段經解譯及/或編譯之程式(本文中稱作「指令碼」)的任何語言。此等術語亦可指代在所管理之執行階段執行且經動態地編譯之任何語言。因此,出於本申請案之目的,術語「動態語言」及「指令碼語言」在各種態樣之描述中之使用不應被解釋為將申請專利範圍限於自原始程式碼或位元組程式碼解譯之語言或限於與傳統上經編譯為原生機器碼之程式一起執行的彼等語言。在本申請案之範疇內之動態語言及指令碼語言的實例包括(例如)JavaScript®、Perl、Python及Ruby,以及未來可開發之其他類似語言。
術語「樣式表語言」及「樣式語言」在本申請案中一般地用以指代表述結構化文件之呈現使得文件之呈現樣式可與文件之內容分離的任何電腦語言。樣式表語言之實例為串接樣式表(CSS),其通常用於描述以標示語言撰寫之文件之呈現語義。
為便於參考,貫穿本申請案,將HTML用作例示性標示語言,將CSS用作例示性樣式表語言,且將JavaScript®用作例示性動態指令碼語言。然而,應注意,除非藉由申請專利範圍明確敍述,否則HTML、CSS及JavaScript®在本申請案中之使用僅用於說明之目的,且不應被解釋為將申請專利範圍之範疇限於特定語言。
HTML為實施ISO/IEC 15445標準之標示語言。可將HTML特徵化為用以描述網頁使得可藉由軟體應用程式(諸如,web瀏覽器)顯示該等網頁之一組標示標記(例如,註釋)。HTML藉由表示文字之結構語義(諸如,標題、段落、清單、連結、引文及其他項目)來考慮結構化
文件之建立。
JavaScript®為實施ECMAScript語言標準(由ECMA國際組織在ECMA-262規範中予以標準化)及/或ISO/IEC 16262標準之動態、弱式型別、物件導向式指令碼語言。JavaScript®實現對主機環境內之計算物件(諸如,在行動裝置處理器上執行之web瀏覽器)之程式設計方式存取。
串接樣式表(CSS)為用以描述網站之外觀及格式化之樣式語言,且意欲用以將文件之呈現與文件之內容分離。每一樣式表可包括具有以下格式之規則之有序集合:selector{property1:value;...propertyn:value;}。作為一實例,以下CSS程式碼告訴瀏覽器在紅色背景上使用白色前景來顯現直接上階係<p>元素之所有<cite>元素:p>cite{color:white;background-color:red;}。網站包括數萬個此等規則並不罕見。
HTML可嵌入JavaScript®程式碼及/或包括至JavaScript®程式碼之連結,其能夠影響含有HTML之頁面之行為及/或呈現。經嵌入/連結之JavaScript®程式碼亦可產生額外HTML程式碼,該額外HTML程式碼可插入至含有HTML之頁面中(亦即,嵌入有JavaScript®之HTML程式碼)。JavaScript®可用以將函式嵌入至HTML程式碼中使得該等函式與HTML頁面之文件物件模型(DOM)互動並操縱該DOM。DOM為用於表示HTML中之物件並與該等物件互動的語言獨立慣例,且允許JavaScript®程式碼存取並操縱含有HTML之頁面。DOM樹通常係作為顯現網頁以識別定義該頁面之各別組件的組件、相對結構、關係及行為之部分而產生。
HTML可包括(例如,嵌入及/或連結至)CSS程式碼。經指定為單獨檔案之CSS程式碼可儲存於遠端伺服器上。習知CSS處理引擎(例如,WebKit或Firefox)在主瀏覽器執行緒中順序地剖析CSS且並不支
援高度並行性或同時性。舉例而言,當CSS程式碼嵌入至HTML文件中時,HTML剖析器無法剖析HTML文件之剩餘部分,直至CSS引擎已剖析HTML文件之標頭中的樣式元素為止。當HTML文件包括至若干CSS檔案之連結時,習知CSS處理引擎將順序地剖析所有經連結之CSS檔案。出於此等及其他原因,習知CSS處理引擎可造成嚴重變慢,尤其在大型CSS檔案之狀況下(此情形係常見的)。
各種態樣方法及瀏覽器利用現代行動裝置中可用之並行性來改良頁面載入、web應用程式及網路通信之效率及速度。
各種態樣可包括藉由以下操作載入/顯現網頁之瀏覽器方法:使用推測/預測技術自不完整的一組資訊中識別很可能需要之資源來預處理web文件(HTML頁面),及請求/預先提取經判定為具有針對web文件之適當顯現所需之高機率的資源。此等資源之預先提取可使得web瀏覽器(及因此之行動裝置)能夠更好地利用可用頻寬,重疊傳送潛時,及改良文件載入時間。
近年來,行動電子裝置(例如,蜂巢式電話、平板電腦、膝上型電腦等)已變得富含更多特徵,且現通常包括多個處理器、系統單晶片(SoC)、多個記憶體,及允許行動裝置使用者在其行動裝置上執行複雜及功率密集型軟體應用程式(例如,web瀏覽器、視訊串流應用程式等)的其他資源。歸因於此等及其他改良,智慧型電話及平板電腦已在風行度方面增長,且正代替膝上型電腦及桌上型電腦機器作為許多使用者之選擇平台。行動裝置使用者現可藉由經由其行動裝置之web瀏覽器存取網際網路來容易地且便利地實現許多其日常任務。
各種態樣提供瀏覽器方法及/或web瀏覽器,其經組態以藉由採用藉由快速處理器及多處理器行動裝置架構實現之同時性/並行性以及使用對資源之推測性處理及預先提取來達成快速回應時間、高效能及高使用者介面回應性,藉此隱藏網路潛時並改良整體使用者體驗。
web瀏覽器為複雜應用程式,其實施多個標準、需要支援舊版行為且為高度動態的及互動式。web瀏覽器設計者大體上旨在達成以下三者之最佳混合:對頁面載入之快速回應時間(即使在存在長網路潛時之情況下);高效能(例如,使得能夠達成web應用程式之互動功能);及高使用者介面回應性(例如,提供良好之使用者體驗)。
在web瀏覽器中採用同時性係一種相對較新之途徑。大多數現有瀏覽器(例如,基於Firefox及WebKit之Chrome及Safari瀏覽器)根本地經架構為順序引擎,其使用事件驅動模型來幫助達成互動功能。歸因於行動裝置及/或瀏覽器子系統之間的大量相依性(且因為許多現有資料結構並非安全執行緒),此等現有解決方案並不支援高度並行性或同時性。
Chrome及WebKit2產生用於每一瀏覽器索引標籤之單獨處理程序,該瀏覽器索引標籤提供不同網站之間的某一隔離,但將使用多個核心之責任委派給作業系統。另外,此等處理程序在記憶體與啟動開銷兩者方面係舉足輕重的。因而,此等解決方案並不加速個別頁面載入或改良網路通信之效率,而是僅支援關於執行同一應用程式之多個執行個體的並行性。此索引標籤級並行性並不解決對行動瀏覽器之需求,其中單一索引標籤效能常常係不充分的且使用者並不會一次開啟許多索引標籤。
OP及OP2瀏覽器可每一網頁產生一新的處理程序集合(稱為「web執行個體」),且瀏覽器組件(例如,網路連接)可在不同處理程序中執行。然而,與所有其他現有瀏覽器解決方案相似,此等解決方案仍然固有地為順序的。舉例而言,雖然可在一單獨處理程序中將網路操作作為剖析操作執行,但網路處理程序仍必須等待剖析處理程序(且反之亦然),此係因為每一操作相依於另一操作。亦即,雖然OP及OP2瀏覽器考慮使用多個處理程序或執行緒,但此等解決方案並不在顯現
網頁中達成高度並行性,此係因為其並不解決用於下載、處理及顯現網頁之瀏覽器處理演算法的串列/順序性質。
各種態樣包括高效能web瀏覽器,其經組態以克服現有瀏覽器處理演算法之串列/順序性質,利用高速處理器及多處理器行動裝置架構之多執行緒執行及並行處理能力,及普及性地採用並行性以改良瀏覽器效能、減小網路潛時及改良行動裝置之使用者的使用者體驗。
各種態樣可實施於若干單一處理器及多處理器電腦系統(包括系統單晶片(SOC))上。圖1說明可用於實施各種態樣之計算裝置中之實例系統單晶片(SOC)100架構。SOC 100可包括若干異質處理器,諸如數位信號處理器(DSP)102、數據機處理器104、圖形處理器106及應用處理器108。SOC 100亦可包括連接至異質處理器102、104、106、108中之一或多者的一或多個共處理器110(例如,向量共處理器)。每一處理器102、104、106、108、110可包括一或多個核心,且每一處理器/核心可獨立於其他處理器/核心而執行操作。舉例而言,SOC 100可包括執行第一類型之作業系統(例如,FreeBSD、LINUX、OS X等)的處理器,及執行第二類型之作業系統(例如,Microsoft Windows 8)的處理器。
SOC 100亦可包括類比電路及定製電路114,其用於管理感測器資料、類比至數位轉換、無線資料傳輸且用於執行其他特殊化操作(諸如,處理經編碼音訊及視訊信號以用於顯現於web瀏覽器中)。SOC 100可進一步包括系統組件及資源116,諸如電壓調節器、振盪器、鎖相迴路、周邊橋接器、資料控制器、記憶體控制器、系統控制器、存取埠、計時器及用以支援處理器及在計算裝置上執行之軟體用戶端(例如,web瀏覽器)的其他類似組件。
系統組件及資源116及/或定製電路114可包括用以介接周邊裝置(諸如,相機、電子顯示器、無線通信裝置、外部記憶體晶片等)之電
路。處理器102、104、106、108可經由互連件/匯流排模組124互連至一或多個記憶體元件112、系統組件及資源116以及定製電路114,互連件/匯流排模組124可包括一可重組態邏輯閘陣列及/或實施匯流排架構(例如,CoreConnect、AMBA等)。可藉由進階互連件(諸如,高效能晶片上網路(NoC))來提供通信。
SOC 100可進一步包括用於與位於SOC外部之資源(諸如,時鐘118及電壓調節器120)通信之輸入/輸出模組(未說明)。位於SOC外部之資源(例如,時鐘118、電壓調節器120)可由內部SOC處理器/核心(例如,DSP 102、數據機處理器104、圖形處理器106、應用處理器108等)中之兩者或兩者以上共用。
除上文所論述之SOC 100之外,各種態樣亦可實施於廣泛多種計算系統中,該等計算系統可包括單一處理器、多個處理器、多核心處理器或其任何組合。
圖2說明可用以實施各種態樣之實例多核心處理器架構。多核心處理器202可包括極接近(例如,在單一基板、晶粒、積體電路等上)之兩個或兩個以上獨立處理核心204、206、230、232。該等處理核心204、206、230、232之接近性允許記憶體以比在信號必須在晶片外傳播之情況下可能達成之頻率/時脈速率高得多的頻率/時脈速率操作。此外,處理核心204、206、230、232之接近性考慮晶片上記憶體及資源(例如,電壓軌)之共用以及核心之間的更協調之合作。
多核心處理器202可包括一多層快取記憶體,其包括層1(L1)快取記憶體212、214、238、240及層2(L2)快取記憶體216、226、242。多核心處理器202亦可包括匯流排/互連介面218、主記憶體220及輸入/輸出模組222。L2快取記憶體216、226、242可大於(及慢於)L1快取記憶體212、214、238、240,但小於(及實質上快於)主記憶體單元220。每一處理核心204、206、230、232可包括一處理單元208、210、
234、236,其可私有地存取L1快取記憶體212、214、238、240。處理核心204、206、230、232可共用對L2快取記憶體(例如,L2快取記憶體242)之存取或可存取一獨立L2快取記憶體(例如,L2快取記憶體216、226)。
L1快取記憶體及L2快取記憶體可用以儲存由處理單元頻繁存取之資料,而主記憶體220可用以儲存正由處理核心204、206、230、232存取之較大檔案及資料單元。多核心處理器202可經組態使得處理核心204、206、230、232按次序自記憶體搜尋資料,其首先查詢L1快取記憶體,接著查詢L2快取記憶體,且接著查詢主記憶體(若資訊未儲存於該等快取記憶體中)。若資訊未儲存於該等快取記憶體或主記憶體220中,則多核心處理器202可自外部記憶體及/或硬碟記憶體224搜尋資訊。
處理核心204、206、230、232可經由匯流排/互連介面218彼此通信。每一處理核心204、206、230、232可具有對一些資源之排他性控制且與其他核心共用其他資源。
處理核心204、206、230、232可彼此相同、為異質的,及/或實施不同特殊化功能。因此,自作業系統觀點(例如,可執行不同作業系統)或自硬體觀點(例如,可實施不同指令集/架構)而言,處理核心204、206、230、232無需為對稱的。
多處理器硬體設計(諸如上文參看圖1及圖2所論述之彼等設計)可包括位於同一封裝內部之具有不同能力的多個處理核心,該等處理核心常常位於同一片矽上。對稱多處理硬體包括兩個或兩個以上相同處理器,該等處理器連接至由單一作業系統控制之單一共用主記憶體。不對稱或「鬆散耦接」多處理硬體可包括兩個或兩個以上異質處理器/核心,該等異質處理器/核心可各自由一獨立作業系統控制且連接至一或多個共用記憶體/資源。
圖3A說明載入及顯現HTML文件之態樣瀏覽器方法300。在區塊302中,web瀏覽器組件可接收請求載入位於一特定統一資源定位器(URL)處之HTML文件的使用者輸入。在區塊304中,web瀏覽器組件可經由熟知之超文字傳送協定(HTTP)訊息(其係經由網際網路傳達)向web伺服器請求位於URL處之HTML文件。在區塊306中,web瀏覽器組件可自web伺服器接收位於URL處之HTML文件。在區塊308中,web瀏覽器組件可剖析所接收之HTML文件以識別/發現HTML檔案中所參考之外部資源(影像、音訊、CSS等)。
在區塊310中,web瀏覽器組件可向維護所識別之外部資源的網路伺服器請求該等資源,該等網路伺服器可包括提供HTML文件之伺服器或可經由網際網路存取之任何其他伺服器。在區塊312中,web瀏覽器組件可自網路伺服器接收所請求之外部資源。在判定區塊314中,web瀏覽器組件可判定所接收之資源中之任一者是否參考其他外部資源。
當web瀏覽器組件判定所接收之資源參考其他外部資源時(亦即,判定區塊314=「是」),web瀏覽器可在區塊310至314中請求/接收由新近所接收之資源參考的彼等其他/額外外部資源。可重複執行此等操作,直至已下載所有所參考之外部資源為止。
當web瀏覽器判定所接收之資源並不參考任何額外外部資源時(亦即,判定區塊314=「否」),在區塊316中,web瀏覽器可分析所接收之外部資源以判定適當地顯現網頁所需之資源。在區塊318中,web瀏覽器可使用所需之下載資源來顯現網頁。
圖3B說明態樣瀏覽器系統350中之實例邏輯組件、資訊流程、操作及變換。瀏覽器系統350可為軟體應用程式/模組,其經組態以使得處理器執行用於自網際網路擷取資訊及/或資源及在計算裝置(例如,行動裝置)之電子顯示器上顯現網頁的各種操作。
瀏覽器系統350可包括指令碼組件362,其經組態以在各種階段及/或在各種操作期間(例如,在頁面載入操作期間及之後,等)與網頁互動以提供與外部模組380之互動功能。外部模組380可包括使用者I/O模組(例如,滑鼠、鍵盤等)及/或應用程式模組(例如,外掛程式、GPS等)。在一態樣中,指令碼362組件可包括JavaScript®引擎,其經組態以編譯及/或執行JavaScript®程式碼。
在區塊354中,瀏覽器系統350可執行提取操作以向web 352中之伺服器請求/自web 352中之伺服器接收程式設計指令356(例如,經由HTTP)。在區塊358中,瀏覽器系統350可轉譯/解碼所接收之程式設計指令356以產生HTML程式碼360。所產生之HTML 360程式碼可包括JavaScript®程式碼(亦即,嵌入JavaScript®程式碼或包括對JavaScript®程式碼之參考),該JavaScript®程式碼之執行可產生額外HTML程式碼以用於插入至含有HTML之頁面(例如,包括有JavaScript®之HTML程式碼)中。此所產生之HTML程式碼可影響HTML頁面之行為及/或呈現。所產生之HTML 360程式碼亦可包括樣式表單及/或CSS程式碼。
在區塊364中,瀏覽器系統350可剖析HTML 360程式碼(及嵌入/參考之JavaScript®程式碼)以產生HTML文件之文件物件模型(DOM)366。DOM 366可表示HTML程式碼中之各種物件的內容、關係、樣式及位置。瀏覽器「遍次」與組件之間的通信可經由DOM 366而發生。「瀏覽器遍次」可為與貫穿HTML文件之相關部分之單一反覆相關聯的執行緒、處理程序或應用程式。在一實施例中,瀏覽器遍次可為「工作項目」。
如上文所提及,JavaScript®程式碼可嵌入於HTML程式碼中,且同時,產生待插入至含有HTML之頁面中的額外HTML程式碼。為了實現程式碼之插入(及為了確保適當次序),可能需要兩個不同處理程
序來解譯、剖析及執行JavaScript®程式碼及含有HTML之程式碼。因此,在一態樣中,可由多個處理程序或應用程式來執行區塊364之剖析操作。
在區塊368中,瀏覽器系統350可執行樣式操作以藉由(例如)將一或多個樣式表(例如,CSS)應用於HTML文件及/或所產生之DOM 366樹來產生經修改之DOM樹370。
在區塊372中,瀏覽器系統350可藉由執行佈局操作來「解決」頁面佈局374。在一態樣中,可執行佈局操作,使得隨著顯示頁面所必要之額外內容變得可用(例如,經下載、處理及/或添加至DOM)而遞增地解決頁面佈局。
在區塊376中,瀏覽器系統350可執行顯現操作以在計算裝置之電子顯示器上顯示HTML文件之內容378。
各種態樣修改現有瀏覽器處理演算法之基礎串列性質。各種態樣可包括支援高度並行性及/或同時性之動態及同時的瀏覽器系統。各種態樣可在多個層採用同時性。各種態樣可執行針對各別瀏覽器遍次之並行演算法以加速各種瀏覽器組件及/或操作之處理及/或執行時間。各種態樣可重疊瀏覽器遍次以加速總執行時間。
圖4及圖5說明根據各種態樣之適於在多個層採用同時性之態樣瀏覽器系統500中的實例組件、資訊流程及子系統。
圖4說明瀏覽器系統500,其包括提取管理器組件502、DOM分派器組件504、HTML剖析器組件506、HTML預掃描器組件508、影像解碼組件510、CSS引擎組件512、JavaScript®引擎組件514、佈局及顯現引擎組件516以及使用者介面組件518。在一態樣中,瀏覽器系統500亦可包括沙箱JavaScript®引擎組件530。此等組件502至530中之每一者可為軟體模組(例如,在處理器上執行之處理程序、執行緒、執行緒集區、程式等)。在各種態樣中,組件502至530中之任一者或全
部可利用執行緒程式庫(例如,Pthreads等)或並行任務程式庫(例如,Intel執行緒建置區塊、Cilk等)以支援同時性。
在一態樣中,瀏覽器系統500之組件502至518、530可經鬆散耦接且經組態以支援同時性。
提取管理器組件502可經組態以自網路提取資源,執行對所提取之資源的快取記憶體管理,及將關於來自網路之資料之到達的通知提供至其他瀏覽器組件。在一態樣中,提取管理器組件502可經組態以按照資源出現於HTML文件中之次序(亦即,不強加任何優先權)來提取資源。在另一態樣中,提取管理器組件502可經組態以指派優先權及/或基於經預先指派之優先權而提取資源。
DOM分派器組件504可經組態以排程DOM更新,將對DOM樹之存取串列化,及管理各種瀏覽器組件之間的互動。其他子系統(亦即,瀏覽器基礎結構之其餘部分)可將工作項目(亦稱為「DOM分派器工作項目」)分派至一同時DOM分派器佇列中。DOM分派器組件504可經組態以自DOM分派器佇列拉取工作項目,且一次一個地處理該等工作項目。在各種態樣中,工作項目可包括瀏覽器遍次及/或事件(例如,計時器事件、來自使用者介面之事件等)。
HTML剖析器組件506可經組態以接收HTML文件之傳入之(例如,部分的,等)資料厚塊(例如,經由DOM分派器工作項目等),且藉由執行HTML剖析演算法(例如,HTML5剖析演算法等)來建構DOM樹。HTML剖析器組件506可將HTML文件中所參考之外部資源添加至提取管理器組件502可存取之提取管理器佇列。HTML剖析器組件506亦可藉由在剖析操作期間在適當時間呼叫JavaScript®引擎組件514來起始JavaScript®程式碼之執行。
HTML預掃描器組件508可經組態以掃描HTML文件以迅速判定HTML文件所請求/所需之外部資源。HTML預掃描器組件508可對提
取管理器組件502分派任務(例如,經由通知、記憶體寫入操作等)以開始下載外部資源及/或基於外部資源而執行進一步處理。
影像解碼器組件510可經組態以解碼影像。舉例而言,當提取管理器組件502接收到影像之完整資料時,其可將影像交遞至影像解碼器組件510,影像解碼器組件510可接著解碼該影像以供稍後使用。
CSS引擎組件512可經組態以計算DOM元素之外觀與風格以供在稍後階段(例如,佈局及顯現階段)中使用。類似於上文所論述之影像解碼操作,提取管理器組件502可將CSS樣式表交遞至CSS引擎以用於剖析及用於發現待請求之新資源。
在一態樣中,CSS引擎組件512可包括CSS資源預先提取器組件520、CSS剖析器組件522及DOM樣式器組件524。CSS資源預先提取器組件520可執行CSS掃描及/或預先提取操作,該等CSS掃描及/或預先提取操作可包括掃描CSS文件以迅速判定CSS文件請求/需要何種外部資源。在一態樣中,CSS資源預先提取器組件520可對提取管理器組件502分派任務以開始下載外部資源及/或基於外部資源而執行進一步處理。
CSS剖析器組件522可經組態以讀取CSS程式碼並建立記憶體中之資料結構(例如,CSS規則)之集合。DOM樣式器組件524可經組態以使用由CSS剖析器組件522建立之資料結構來判定DOM樹中之節點的樣式。對於每一節點,CSS引擎組件512可執行規則匹配操作以找到選擇器匹配該節點的規則。此等規則匹配操作可每一節點傳回許多(且有時相衝突)規則。在各種態樣中,CSS引擎512可經組態以使用串接操作來將權重指派給規則並選擇具有最大權重之規則。
JavaScript®引擎組件514可經組態以編譯並執行JavaScript®程式碼。提取管理器502可下載JavaScript®指令碼並將其發送至JavaScript®引擎組件514以進行編譯。HTML剖析器506及/或DOM分
派器504可請求JavaScript®引擎組件514執行指令碼。
JavaScript®引擎組件514可包括用於編譯任務/操作之執行緒集區,且可經組態以並行地編譯多個指令碼(JavaScript®程式碼)。在一態樣中,歸因於JavaScript®語義,可在主引擎執行緒中順序地執行指令碼之執行。在一態樣中,JavaScript®引擎組件514可經組態使得當HTML剖析器506或DOM分派器504(例如,針對使用者介面事件)請求JavaScript®引擎組件514執行尚未經編譯之指令碼時,JavaScript®引擎組件514自動地起始指令碼之編譯且在試圖執行所請求之指令碼之前等待編譯之結果。
在各種態樣中,JavaScript®引擎組件514可包括輕型編譯器526及完整編譯器528(例如,以支援JavaScript®程式碼之自適應編譯及執行)。輕型編譯器526可經組態以產生用於偶爾再使用之JavaScript®程式碼的可執行程式碼及/或經最佳化以用於頁面載入。完整編譯器528可經組態以產生用於大量地再使用之JavaScript®程式碼的較高品質程式碼及/或經最佳化以用於達成互動功能及web應用程式。在各種態樣中,可將完整編譯器528之較緩慢程式碼產生攤銷於再使用之程式碼的多個執行之間。與輕型編譯器526相比,完整編譯器528可針對反覆web應用程式達成顯著加速。舉例而言,使用完整編譯器528,N本體模擬web應用程式執行之速度可快6倍。
沙箱JavaScript®引擎組件530可為與主要JavaScript®引擎組件514分離的隔離之JavaScript®引擎。沙箱JavaScript®引擎組件530可包括JavaScript®引擎組件514之所有組件、特徵及功能性。
佈局及顯現引擎組件516可經組態以將經樣式化之DOM樹變換成可檢視網頁。在一態樣中,佈局及顯現引擎組件516可經組態以在行動裝置之電子顯示器上反映DOM及/或CSS樣式表的改變,使得使用者可檢視經更新之HTML文件並與該經更新之HTML文件互動。DOM
及/或CSS之改變可歸因於提取管理器組件502遞送新資源、HTML剖析器組件506更新DOM、由於JavaScript®引擎組件514計算,等。
在一態樣中,佈局及顯現引擎516可經組態以給DOM資訊拍攝快照且非同步地執行佈局及/或顯現操作。在另一態樣中,佈局及顯現引擎516可經組態以同步地調用佈局及/或顯現操作(例如,當JavaScript®使用查詢佈局資訊之API時)。
使用者介面組件518可經組態以管理瀏覽器系統500與行動裝置使用者之間的互動。使用者介面組件518可將使用者互動(例如,觸碰行動裝置之電子顯示器上的連結)轉譯成建立供置放於DOM分派器佇列中之工作項目的函式/方法呼叫(例如,Java原生介面或「JNI」方法呼叫)。
在一態樣中,所有上文所提及之組件502至518、530可針對每一網頁執行個體化一次。在另一態樣中,提取管理器組件502與佈局及顯現引擎組件516可為全域的,而其他組件(例如,504、506、508、510、512、514及518)可針對每一網頁或HTML文件執行個體化一次。
圖5說明上文所論述之態樣瀏覽器系統500中之實例子系統及資訊流程。具體言之,圖5說明瀏覽器系統500可包括使用者介面子系統552、資源管理器子系統554、每頁DOM引擎子系統556、每頁JavaScript®引擎子系統558及顯現引擎子系統560。
子系統555至560中之每一者可經鬆散耦接且經組態以支援同時性。子系統552至560可實施為軟體模組(例如,在處理器上執行之處理程序、執行緒、程式等)。子系統552至560之操作可由上文參看圖4所論述之組件中之一或多者執行及/或在任何單一或多處理器計算系統上執行。
在一態樣中,針對每一網頁或HTML文件,可將資源管理器子系統554及顯現引擎子系統560執行個體化一次(例如,可為全域的),且
可將每頁DOM引擎子系統556及每頁JavaScript®引擎子系統558執行個體化一次。
使用者介面子系統552可經組態以執行用於管理與瀏覽器系統550之使用者互動的各種操作,該等操作包括:將使用者互動(例如,觸碰行動裝置之電子顯示器上的連結)轉譯成建立供置放於DOM分派器佇列中之工作項目的函式/方法呼叫;偵測事件及/或將事件發送至每頁JavaScript®引擎子系統558之正確執行個體;及/或將統一資源定位器(URL)/統一資源識別符(URI)資訊發送至資源管理器子系統554(例如,經由記憶體寫入操作、函式呼叫等)。
資源管理器子系統554可經組態以執行預先提取操作562、HTML預掃描操作563、影像解碼操作564、CSS掃描/預先提取操作566及JavaScript掃描/預先提取操作567。以實例說明,此等操作可由提取管理器502、HTML預掃描器508、影像解碼器510、CSS引擎512及/或JavaScript引擎514、530組件或由上文參看圖4所論述之組件之任何組合執行。
預先提取操作562可包括:向對應於URL/URI之web伺服器請求/自對應於URL/URI之web伺服器接收資源及/或程式設計指令;轉譯或解碼所接收之程式設計指令以產生HTML;及將所產生之HTML程式碼發送至每頁JavaScript®引擎子系統558之正確執行個體(例如,經由記憶體寫入操作等)。
所產生之HTML程式碼可嵌入及/或參考JavaScript®程式碼、CSS程式碼、影像及各種其他資源。HTML文件中最通常參考之資源為影像、CSS樣式表及JavaScript®來源。樣式表及JavaScript®來源亦可參考其他外部資源。在一態樣中,可掃描所產生之HTML程式碼,使得可提前提取(例如,作為預先提取操作562之部分)藉由HTML文件識別之所有參考(包括經嵌入或參考之樣式表及JavaScript®來源)。
HTML預掃描器操作563可包括掃描所產生之HTML程式碼以迅速發現所請求/所需之外部資源,且告知提取管理器及/或預先提取器其可開始下載該等外部資源及/或基於該等所發現之外部資源而執行進一步處理。在一態樣中,可作為上文所論述之預先提取562操作之部分執行外部資源之下載。在一態樣中,可同時執行HTML預掃描器操作508及預先提取操作562(例如,在單獨執行緒/處理程序中)。
影像解碼操作564可包括解碼影像以供稍後由顯現引擎子系統560使用。可回應於判定已下載(例如,經由作為預先提取562操作之部分執行的記憶體寫入操作等)影像之完整資料集及/或回應於接收到通知(例如,自提取管理器520組件),執行影像解碼操作564。在一態樣中,影像解碼操作564可與HTML預掃描器操作563及預先提取操作562同時執行。
CSS掃描/預先提取操作566可包括掃描嵌入於所產生之HTML程式碼中(或所產生之HTML程式碼所參考)的CSS樣式表以迅速地發現CSS樣式表請求之所請求/所需之外部資源。在一態樣中,CSS掃描/預先提取操作566可包括告知提取管理器及/或預先提取器其可開始下載所發現之外部資源。在一態樣中,CSS掃描/預先提取操作566可包括起始所發現之外部資源的下載。在一態樣中,可回應於提取管理器組件502將一或多個CSS樣式表發送至CSS引擎組件512而在CSS引擎組件512中執行CSS掃描/預先提取操作566(例如,藉由CSS資源預先提取器520)。在一態樣中,CSS掃描/預先提取操作566可與影像解碼操作564、HTML預掃描器操作563及預先提取操作562同時執行。
每頁DOM引擎子系統556可經組態以執行HTML剖析操作568、CSS剖析操作570、計時器操作572、樣式化操作574及用以管理事件之操作576。在一態樣中,每頁DOM引擎子系統556之操作可與其他子系統552、554、558、560之操作同時執行。
HTML剖析操作568可包括:剖析所接收之HTML程式碼;將HTML標示標記與實質內容分離;及/或產生所接收之HTML程式碼之DOM。HTML剖析操作568亦可包括識別HTML文件中所參考之外部資源,使得可由提取管理器502及/或作為預先提取操作562之部分而下載該等所識別之外部資源。HTML剖析操作568可進一步包括在HTML程式碼之剖析期間(例如,當發現JavaScript®時,等)起始JavaScript®程式碼之執行(例如,藉由調用執行操作578)。
CSS剖析操作570及樣式化操作574可包括將一或多個CSS樣式表應用於所產生之DOM樹(或基於CSS樣式表而產生經修改之DOM樹)。在各種態樣中,可同時執行HTML剖析操作568、CSS剖析操作570及樣式化操作574中之任一者或全部。
計時器操作572可包括管理或回應於與計時器及/或計時器類別(例如,System.Timers)有關的事件及/或條件。
事件操作576可包括管理各種事件,諸如計時器事件及使用者介面事件(例如,回應於使用者觸碰行動裝置之電子顯示器上之連結而產生的事件)。
每頁JavaScript®引擎子系統558可經組態以執行JavaScript®執行操作578及JavaScript®編譯操作580。
在各種態樣中,每頁DOM引擎子系統556及/或資源管理器子系統554可經組態以將嵌入於HTML程式碼中(或由HTML程式碼參考)之JavaScript®程式碼發送至每頁JavaScript®引擎558之正確執行個體,以供編譯及/或執行(亦即,經由執行578操作及編譯580操作)。在態樣中,JavaScript®引擎558可基於JavaScript®編譯操作580及/或執行操作578之結果而更新/修改所產生之DOM樹。
顯現引擎子系統560可經組態以執行佈局操作582及顯現操作584。舉例而言,顯現引擎子系統560可自每頁DOM引擎子系統556接
收(例如,經由記憶體寫入、呼叫、通知等)DOM樹及/或佈局樹,解決頁面佈局(經由佈局操作582),及在計算裝置之電子顯示器上顯示內容(經由顯現操作584)。在一態樣中,執行佈局操作582可包括隨著額外內容變得可用於顯現引擎子系統560(例如,經下載、處理及/或添加至DOM樹)而遞增地解決頁面佈局。在各種態樣中,可同時執行佈局操作582及/或顯現操作584中之任一者或全部。
如上文參看圖4及圖5所論述,HTML剖析器506及/或CSS剖析器522可發現針對顯現HTML文件所請求/所需之外部資源(影像、音訊、CSS、JavaScript®等)且請求下載所發現之資源(諸如,經由提取管理器502及/或作為預先提取操作之部分)。
當下載在HTML及CSS程式碼/內容中發現之資源時,行動裝置可經歷高潛時時間。舉例而言,歸因於HTML5規範中之特質,HTML剖析器必須在其可繼續剖析HTML文件之剩餘部分之前等待一指令碼元素(例如,<script>區塊)結束執行。因此,若網頁在一指令碼元素之後參考外部資源,則提取彼資源之操作無法與等待指令碼元素結束執行之操作重疊。此情形常常增加下載及顯示網頁所需之時間。
在各種態樣中,瀏覽器系統500可經組態以在指令碼元素之前推測性地剖析以發現新資源,而無需等待指令碼元素結束執行。在此等態樣中,可迫使瀏覽器系統500放棄推測性剖析之結果中之一些結果(例如,當JavaScript®經由document.write API將新內容插入至DOM樹中時,等)。
在一態樣中,瀏覽器系統500可經組態以執行積極性資源預先提取操作以儘可能早地發現所請求/所需之資源且請求並行地提取/下載多個資源。以此方式,各種態樣可防止迫使瀏覽器系統500放棄推測性剖析之結果中的一些結果,且可掩飾網路潛時,利用更多可用頻寬及減少等待資源到達所花費的總時間。
瀏覽器系統500可經組態以執行積極性資源預先提取操作,該等積極性資源預先提取操作可包括經由沙箱執行進行之推測性資源預先提取。在各種態樣中,可作為HTML預掃描操作563、CSS預先提取操作566或兩者之部分執行此等積極性資源預先提取操作。
參看圖4至圖5,為促進積極性資源預先提取操作而執行之HTML預掃描操作563可包括:獲得HTML文件中之所有「id」、「類別」及/或「樣式」屬性;迅速發現HTML文件中所參考之外部資源;及觸發自網路下載所發現之資源。HTML預掃描器508可「大致剖析」HTML以便發現資源,而不執行HTML剖析器506所需之實質或計算密集型處理(例如,建構DOM樹)中之任一者。藉由摒除此等複雜剖析操作,HTML預掃描操作563可與HTML剖析操作568同時執行(及在HTML剖析操作568之前執行),且不必等待指令碼元素結束執行。
在一態樣中,當網路封包到達時,可將該等網路封包獨立地發送至HTML預掃描器508及HTML剖析器506。在一態樣中,可藉由與(非推測性)HTML剖析570操作並行地執行HTML預掃描操作563來進一步減少等待資源到達所花費的時間。
如上文所論述,web瀏覽器系統500可包括經組態以迅速掃描CSS文件之CSS剖析器522及經組態以執行CSS預先提取操作之CSS資源預先提取器520。在一態樣中,可將CSS樣式表分派至負責同時剖析CSS之執行緒集區。若CSS規則含有其他外部資源,則CSS資源剖析器520可基於在HTML文件中實際上參考其他外部資源之似然性而作出關於是否起始對其他外部資源之預先提取的決策。在一態樣中,CSS資源預先提取器520可經組態以下載特定範圍/數目之所參考資源(或起始對特定範圍/數目之所參考資源的下載)(下載太少資源可意謂:在稍後將DOM樹樣式化時,將由DOM樣式器524發現更多新資源,此情形可導致額外潛時)。
以下情形為慣例:在網站當中藉由(例如)使用整個網站共同樣式檔案來參考比任何給定文件實際上所需之資源更多的資源。下載所有所包括之資源可消耗過多頻寬且使頁面載入變慢。在各種態樣中,CSS剖析器522可經組態以使用由HTML預掃描器508發現之「id」及「類別」屬性來判定是否很可能匹配一CSS規則。若HTML預掃描器508已查看/評估CSS規則選擇器中所參考之所有屬性值,則可判定該規則很可能匹配至少一DOM樹元素,且瀏覽器系統500可起始對對應於該CSS規則之資源的下載。此「CSS規則」試探法非常有效,且錯誤決策對瀏覽器系統500之操作不具有顯著負面影響。可在DOM樣式化階段(經由DOM樣式器組件524)期間以下載資源所需之潛時為代價來發現遺失之資源。
在一態樣中,HTML預掃描器508可經組態以識別及/或發現可在不必執行JavaScript®的情況下發現之資源。
如上文所論述,當下載HTML及CSS程式碼/內容中所發現之資源時,歸因於HTML5規範中之特質(諸如,需要HTML剖析器在其可繼續剖析之前等待一指令碼元素(例如,<script>區塊)結束執行),行動裝置可經歷高潛時時間。另外,現代web文件(例如,HTML頁面、HTML文件等)可參考大量外部資源,且每一外部資源可包括對其他外部資源之參考。舉例而言,HTML文件通常包括對各種外部資源(諸如,影像、音訊、串接樣式表(CSS)及JavaScript®)之參考,且所參考之資源(例如,CSS、JavaScript®)可進一步包括對額外外部資源(例如,影像、音訊等)之參考。
文件載入時間(亦即,自請求文件直至文件準備好顯示於螢幕上為止的時間)由輸入/輸出成本(例如,所需資源之網路傳送)來支配。載入所有所需資源所需的最少文件載入時間係藉由資源儲存器與計算裝置之間的連接之頻寬來約束。又,將文件資源傳送至顯示裝置會招
致潛時成本。各種態樣可經組態以儘可能早地開始資源傳送以更好地利用可用頻寬,重疊傳送潛時及改良文件載入時間。
如上文所提及,因為顯現一給定網頁並不需要(或甚至使用)所有所參考之外部資源,所以遞歸地下載所有所參考之資源可浪費顯著量之頻寬及功率。另外,當該等資源中之任一者並非立即可用時,瀏覽器必須等待直至其在可適當地顯現頁面之前接收到彼等資源並分析彼等資源為止。此情形增加下載及/或顯現網頁所需之時間量(例如,文件載入時間),且使使用者經歷降級。
習知解決方案試圖使用技術來加速網頁之顯現,諸如,快取記憶體中之網頁之部分以減少在下次存取頁面時必須下載的資訊。然而,使用習知解決方案,web瀏覽器在不首先分析整個文件(亦即,網頁)、請求並接收文件及子文件中所參考之大部分(若非全部)資源及分析所接收之資源的情況下,第一次無法識別顯現網頁所需之外部資源。因此,使用習知解決方案,無法判定文件所需之精確組資源,直至已完全分析整個文件之後。
為了克服現有解決方案之此等限制,各種態樣可在分析整個文件之前利用推測/預測技術來識別顯現網頁或文件所需之資源。
大體上,推測性地預測是否需要資源(基於不完整的一組資訊)產生四種可能之結果中的一者:真肯定;真否定;誤肯定;及誤否定。真肯定結果係在推測性地下載資源且稍後實際上需要資源時。真否定結果係在未推測性地下載資源且資源並非所需資源時。誤肯定結果係在推測性地下載並非所需資源之資源(此情形浪費頻寬及能量)時,且誤否定結果係在未推測性地下載資源但資源為所需資源時(因此自推測性預處理未獲得關於此資源之任何資訊)。
真肯定結果及真否定結果係有益的且係吾人所要的,此係因為此等決策藉由減少頁面載入時間而改良了使用者體驗。然而,誤肯定
結果及誤否定結果係不利的。舉例而言,誤否定可導致在文件(例如,HTML文件)之顯現期間請求一資源,此情形可延長文件載入時間直至資源可用為止。由於瀏覽器適當地顯現文件不需要資源,因此浪費了計算及網路資源(頻寬、處理等)。
各種態樣包括web瀏覽器系統,其經組態以基於試探法而執行推測性資源下載操作以使真肯定及真否定之數目最大化,同時使誤肯定及誤否定下載決策之數目最小化。
圖6說明處理HTML文件以發現適當地顯現網頁所需之外部資源(影像、音訊、CSS、JavaScript®等)及在頁面載入/顯現操作之前預先提取所發現之資源的態樣瀏覽器方法600。方法600之操作可由執行經合適組態之web瀏覽器之單一或多處理器計算系統的處理器來執行。
參看圖6,在區塊602中,web瀏覽器可起始或調用掃描操作(例如,經由HTML預掃描器508、CSS引擎512等)以掃描HTML文件及/或CSS文件以查找結構資訊及/或發現資源。在一態樣中,可作為HTML預掃描操作563之部分執行掃描操作。在一態樣中,可作為CSS掃描操作566之部分執行掃描操作。在各種態樣中,掃描操作可與HTML剖析操作568及CSS剖析操作570同時且獨立於HTML剖析操作568及CSS剖析操作570來執行。在各種態樣中,可藉由處理程序、執行緒、應用程式、工作項目及/或瀏覽器遍次來執行掃描操作。
在區塊604中,掃描操作(例如,HTML掃描操作563及/或CSS掃描操作566)可判定(亦即,預測、推測)很可能需要所發現之資源中之哪些資源。在區塊606中,掃描操作可向瀏覽器提取組件(例如,向提取管理器502)發出資源請求(例如,經由記憶體寫入操作等)以開始下載經判定為具有所需之高機率的資源。在一態樣中,作為區塊606之部分,可並行地或同時地發出(或發送)兩個或兩個以上資源請求。在一態樣中,每一資源請求可繁衍一新的處理程序及/或由一不同執行
緒處理。在區塊608中,掃描操作可繼續掃描HTML文件及/或CSS文件以發現額外所需之資源。可重複區塊604至608中之操作直至發現所有外部資源及/或掃描整個HTML文件為止。
在區塊610中,web瀏覽器可起始或調用提取操作(例如,經由提取管理器502)以下載藉由資源請求(例如,在區塊606中藉由掃描操作發出之資源請求)識別之一或多個資源。
在區塊612中,web瀏覽器可掃描所下載之資源以發現對外部資源之額外參考。作為區塊612之部分,web瀏覽器可起始或調用一新的處理程序或執行緒以執行掃描操作。在一態樣中,作為區塊612之部分,web瀏覽器可起始或調用CSS掃描操作566。在一態樣中,作為區塊612之部分,web瀏覽器可起始或調用HTML掃描操作563。
在區塊614中,web瀏覽器可基於掃描所下載之資源而判定(亦即,預測、推測)很可能需要之所發現之資源。在區塊616中,web瀏覽器可向瀏覽器提取組件(例如,向提取管理器502)發出額外資源請求(例如,經由記憶體寫入操作等)以下載經判定為具有所需之高機率的資源。在一態樣中,此等額外資源請求中之每一者可繁衍其他處理程序及/或可由一不同處理程序或執行緒處理。可重複區塊610至616中之操作直至發現及/或下載所有外部資源為止。在一態樣中,區塊602至608之操作可與區塊610至616中之操作並行地執行。
不同於習知HTML剖析器,上文參看圖6所論述之掃描操作並不對所掃描之HTML文件執行錯誤校正或執行所遇到之JavaScript®程式碼。此情形使得能夠迅速執行掃描操作。又,不同於習知HTML剖析器,可並行地或同時地執行上文所論述之掃描操作(例如,在獨立執行緒或處理程序中,等),此情形使得各種態樣能夠更充分地利用現代計算裝置中盛行之多處理器架構。另外,上文所論述之掃描處理程序可掃描HTML文件(例如,CSS文件)中所參考之資源,此情形在習
知HTML剖析器中亦並未執行。
大體上,除非(例如)在文件中存在結構錯誤(由於掃描器並不執行錯誤校正)或在文件中存在嵌入之JavaScript®程式碼(在經剖析時,嵌入之JavaScript®程式碼作出對文件之更改)(由於掃描器並不執行JavaScript®),否則若掃描操作(例如,HTML預掃描操作563、CSS掃描操作566等)僅掃描HTML文件之結構,則很可能關於所需之資源正確地推測(亦即,僅產生真肯定)。
在一態樣中,為了使真肯定及真否定之數目最大化,掃描操作(例如,HTML預掃描操作563、CSS掃描操作566等)可使用在HTML文件之初始掃描期間所獲得的資訊來識別很可能需要之資源。
圖7A說明使用推測技術及試探法來發現文件資源以用於推測性下載之態樣瀏覽器方法700。該等文件資源可包括影像、CSS檔案、JavaScript®指令碼等。瀏覽器方法700使得HTML文件掃描器及複數個CSS文件掃描器能夠並行地執行,智慧地識別很可能需要之資源,減少由於推測性資源請求及/或預先提取操作產生之誤否定的數目。在一態樣中,瀏覽器方法700可利用試探法(例如,「CSS規則」試探法)來使誤肯定之數目最小化。
在瀏覽器方法700之區塊702中,HTML文件掃描器(例如,HTML預掃描器508)可開始掃描HTML文件以發現資源並獲得所有URL/URI及與HTML文件中所包括之HTML元素相關聯(或藉由HTML文件中所包括之HTML元素提及)的HTML「id」、「類別」及/或「樣式」屬性。HTML文件掃描器可獨立於HTML剖析器及/或與HTML剖析器並行地執行。
在區塊704中,HTML文件掃描器可遇到URL/URI及/或HTML文件中所包括之HTML元素所參考的外部資源。在區塊706中,HTML文件掃描器可發出一請求(例如,向提取管理器)以下載HTML文件中所
參考之所遇到的資源。在一態樣中,HTML文件掃描器可經組態以調用對每一所遇到之外部CSS資源的下載及/或剖析(例如,在掃描器遇到外部資源時,等)。在一態樣中,對外部CSS資源之下載可導致CSS文件掃描器(例如,CSS引擎512等)開始掃描CSS文件。
在區塊708中,HTML文件掃描器可遇到及/或收集HTML id、類別及樣式屬性。在區塊710中,HTML文件掃描器可將所遇到/所收集之資訊(亦即,關於所收集之id、類別及樣式屬性的資訊)發送至CSS文件掃描器。在一態樣中,發送所收集之資訊可包括將每個所遇到及/或所識別之HTML id、類別及樣式屬性發送至CSS文件掃描器。
在區塊712中,HTML文件掃描器可繼續掃描HTML文件以發現額外資源。在判定區塊714中,HTML文件掃描器可判定其是否已結束掃描HTML文件。當HTML文件掃描器判定其已結束掃描HTML文件時(亦即,判定區塊714=「是」),在區塊716中,HTML文件掃描器可通知CSS文件掃描器(例如,CSS引擎512、執行CSS掃描操作566之處理程序等)其已結束掃描HTML文件(例如,經由記憶體寫入操作、方法呼叫、通知等)。當HTML文件掃描器判定其尚未結束掃描HTML文件時(亦即,判定區塊714=「否」),在區塊702中,HTML文件掃描器可繼續掃描HTML文件以發現額外資源。
在瀏覽器方法700之區塊719中,CSS文件掃描器可開始掃描CSS文件以查找外部資源。可藉由由提取管理器獲得之CSS文件的可用性(例如,回應於作為區塊706之部分執行的操作等)來觸發區塊719中對CSS文件掃描器之起始。在一態樣中,CSS文件之掃描可與HTML文件之掃描(例如,區塊702至716中之操作)並行地執行。因此,CSS文件掃描器可掃描所接收之CSS文件以識別彼等文件中所參考之外部資源,同時HTML文件掃描器繼續掃描HTML文件(例如,識別供下載之額外CSS文件等)。另外,可存在並行地執行之多個CSS文件掃描器
(例如,當下載多個CSS文件時)。
在區塊720中,CSS文件掃描器可自HTML文件掃描器接收關於HTML id、類別及/或樣式屬性之資訊。在區塊721中,CSS文件掃描器可判定所接收之資訊是否將CSS規則及/或外部資源(與所接收之HTML id、類別及/或樣式屬性相關聯)標記或識別為很可能為HTML文件所需及/或使用。在態樣中,作為區塊721之部分,CSS文件掃描器可判定HTML文件掃描器是否業已遇到與CSS規則相關聯之每個HTML id、類別及/或樣式屬性。
在判定區塊722中,CSS文件掃描器可判定CSS規則及/或外部資源(與所接收之HTML id、類別及/或樣式屬性相關聯)是否很可能為HTML文件所需及/或使用。在一態樣中,作為判定區塊722之部分,CSS文件掃描器可判定是否業已遇到每個URL/URI及藉由HTML文件提及之HTML id、類別及/或樣式屬性。
當CSS文件掃描器判定CSS規則及/或外部資源很可能為HTML文件所需及/或使用時(亦即,判定區塊722=「是」),在區塊724中,CSS文件掃描器可立即請求下載藉由彼CSS規則參考之資源(諸如,藉由執行記憶體寫入操作及/或通知提取管理器502)。
在一態樣中,當判定業已遇到每個URL/URI及藉由HTML文件提及之HTML id、類別及/或樣式屬性時,CSS文件掃描器可判定很可能需要CSS規則及/或外部資源。
當CSS文件掃描器判定CSS規則及/或外部資源不太可能為HTML文件所需及/或使用時(亦即,判定區塊722=「否」),在區塊723中,CSS文件掃描器可在記憶體中將關於CSS規則之資訊(例如,所接收之HTML id、類別及/或樣式屬性)儲存於資源參考清單中。在區塊725中,CSS文件掃描器可在必要的情況下繼續掃描CSS文件(例如,當存在待掃描/處理之額外元素時,等)。
在區塊726中,CSS文件掃描器可自HTML文件掃描器接收指示HTML文件掃描器已結束掃描HTML文件的通知。在區塊727中,CSS文件掃描器可自儲存於記憶體中之資源參考清單擷取關於CSS規則之資訊並評估所擷取之資訊。
在判定區塊728中,CSS文件掃描器可判定所擷取之資訊是否將CSS規則及/或外部資源標記為為HTML文件所需(或很可能需要)。在態樣中,作為判定區塊728之部分,CSS文件掃描器可判定HTML文件掃描器是否業已遇到及/或處理與所擷取之CSS規則相關聯的每個HTML id、類別及/或樣式屬性。
當CSS文件掃描器判定所擷取之資訊將CSS規則及/或外部資源標記/識別為很可能為HTML文件所需及/或使用時(亦即,判定區塊728=「是」),在區塊729中,CSS文件掃描器可請求下載對應於彼CSS規則之資源。以此方式,可使由於同時掃描HTML文件及CSS文件造成之誤否定的數目最小化。另外,各種態樣可減少文件載入時間(及因此增加回應性),其中資料傳送成本很少增加或不增加,以及較少之功率消耗(歸因於對處理器及網路介面/無線電之減少之利用)。
返回至圖7A,當CSS文件掃描器判定所擷取之資訊並不將外部資源標記或識別為為HTML文件所需(或很可能需要)時(亦即,判定區塊728=「否」),在區塊721中,CSS文件掃描器可自記憶體擷取下一規則。可重複區塊720至722之操作直至已評估由HTML文件掃描器儲存於記憶體中的所有CSS規則為止。
在各種態樣中,可由HTML文件掃描器及/或CSS文件掃描器使用比上文所描述之CSS規則更精確的試探法以改良效能。舉例而言,在一態樣中,HTML文件掃描器可經組態以掃描嵌入之JavaScript®程式碼以查找可修改HTML文件之URL及/或命令。類似地,在一態樣中,CSS文件掃描器可經組態以記錄關於與每一所遇到之ID相關聯之
HTML標記的階層資訊,此情形可允許CSS文件掃描器識別並拒絕更多可能之誤肯定。
在習知瀏覽器中,HTML剖析器大體上負責識別所有外部資源並經由網路向伺服器請求該等外部資源。如上文所論述,當在HTML文件中明確指定此等資源時,各種態樣可預先提取此等資源並在頁面載入中比習知瀏覽器早得多地發出請求。另外,各種態樣可並行地預先提取及/或處理該等資源。
軟體開發者正日益使用指令碼(例如,JavaScript® code®)來動態地判定針對一特定應用程式-裝置組合(例如,web瀏覽器-行動裝置組合)將需要之資源。舉例而言,指令碼可評估與用戶端(例如,瀏覽器)及計算裝置有關的各種因素以識別將下載之資源。此等指令碼可本質上基於所評估之因素而針對一資源(例如,影像、CSS、其他JavaScript®等)動態地建置URL。因此,HTML文件可能需要在HTML文件中未經明確識別且僅可藉由執行HTML文件中所包括之JavaScript®程式碼而判定的資源。
由於JavaScript®程式碼可改變含有HTML(及HTML程式碼自身)的狀態、行為及/或呈現,因此需要HTML剖析器順序地及/或根據HTML規範中所定義之以下排序規則來執行所遇到之JavaScript®程式碼(或指令碼)。舉例而言,當HTML剖析器遇到指令碼標記(亦即,用以定義用戶端側指令碼(諸如,JavaScript®指令碼)之<script>標記)時,HTML剖析器必須在其可繼續剖析HTML文件之剩餘部分之前等待下載及執行指令碼。因此,所有資源請求可在JavaScript®指令碼(亦即,在<script>標記內部之JavaScript®程式碼)之執行內經串列化(亦即,需要一個接一個地執行)。又,以下情形可為更困難的:HTML文件掃描操作(例如,HTML預掃描操作563等)靜態地預測針對適當顯現網頁將需要之資源。
各種態樣可藉由推測性地預先提取沙箱JavaScript®引擎530中之資源來克服此等及其他限制,此情形使得瀏覽器系統500能夠與其他瀏覽器操作(例如,HTML剖析)及其他資源請求並行地發現及下載在HTML文件中未經明確請求之資源。此等態樣亦可使得瀏覽器系統500能夠並行地執行多個JavaScript®指令碼而不會無意識地修改瀏覽器狀態。
各種態樣可在一發現指令碼(例如,JavaScript®程式碼)時便與其他瀏覽器操作(例如,HTML預掃描563、HTML剖析568等)及/或其他指令碼並行地執行該等指令碼。為了避免干擾網頁之正常處理,可在沙箱JavaScript®引擎530中執行指令碼,沙箱JavaScript®引擎530與其他瀏覽器組件隔離及/或分離(例如,以便不影響主要JavaScript®引擎之操作)。在沙箱JavaScript®引擎530中執行指令碼防止系統在指令碼之並行執行期間無意識地修改瀏覽器狀態。在一態樣中,可在沙箱JavaScript®引擎530之單獨執行個體(例如,執行緒)中執行每一指令碼。
各種態樣可修改瀏覽器用戶端與JavaScript®引擎530之間的API。
大體上,指令碼引擎(例如,JavaScript®引擎514、530、558)提供至瀏覽器API(亦即,使得指令碼能夠調用瀏覽器操作之介面)之繫結(亦即,用於映射語言之API)以調用瀏覽器操作(例如,操縱DOM、存取網路等)。
在一態樣中,JavaScript®引擎530可監視向網路請求資源之瀏覽器API。JavaScript®引擎530可修改繫結(或為指令碼引擎提供單獨的一組繫結)以使得將資源請求重新導向至一不同瀏覽器組件(諸如,預先提取器組件)。以此方式,可將資源請求及/或所收集之資訊直接傳遞至預先提取器組件以供進一步處理。
沙箱JavaScript®引擎可掃描整個JavaScript®程式碼且僅執行程式碼之選擇部分及/或與發現外部資源最相關之選擇操作。由於掃描操作僅與發現指令碼可請求之資源有關,因此掃描操作不受HTML規範規則束縛,且不必運行/執行所有所遇到的程式碼。藉由未完全執行所有所遇到之程式碼,可藉由沙箱JavaScript®引擎迅速執行JavaScript®掃描操作。
沙箱JavaScript®引擎可應用試探法以進一步加速JavaScript®掃描操作。以實例說明,此等試探法可包括限制總執行時間(例如,每一指令碼或操作花費最大10ms,等)、迴圈反覆之數目(例如,僅處理迴圈之前10個反覆,等)、遞歸深度、所支援特徵、抽象解譯等。
各種態樣可限制物件及資料結構(例如,雜湊表、陣列等)之大小以進一步加速JavaScript®掃描操作,此係由於此等結構大體上不影響資源相依性。
軟體開發者常常在其程式碼中使用共同型樣、構架及/或服務(本文中統稱為「型樣」)。各種態樣可偵測程式碼中之此等共同性/型樣(例如,在剖析、分析、編譯等期間)且僅執行與發現資源相關之型樣(或藉由該等型樣識別之JavaScript®程式碼之部分)。在一態樣中,沙箱JavaScript®引擎可經組態以將最通常型樣作為目標(例如,經由積極性編譯器最佳化),而非進行充分順應及保守程式碼產生。可使用廣泛多種已知之型樣辨識技術來偵測型樣,諸如偵測程式碼中之關鍵字(其為相對簡單的操作)及/或分析頁面及/或指令碼之結構(其為相對複雜的操作)。
圖7B說明藉由在沙箱JavaScript®引擎中並行地處理指令碼來推測性地並行地預先提取資源之態樣方法730。方法730之操作可與本文中所論述之其他瀏覽器操作並行地執行。
在方法730之區塊732中,HTML文件掃描器(例如,HTML預掃描
器508)可開始掃描HTML文件以查找結構資訊及/或發現資源。在區塊734中,HTML文件掃描器可遇到JavaScript®指令碼,且將所遇到之指令碼發送(例如,經由記憶體寫入操作、經重新導向之資源請求、經修改之繫結等)至沙箱JavaScript®引擎以立即執行所遇到之指令碼。在區塊732中,HTML文件掃描器可繼續掃描HTML文件以查找結構資訊及/或發現資源。在一態樣中,HTML文件掃描器可回應於遇到指令碼而產生(或繁衍)沙箱JavaScript®引擎。
在區塊735中,沙箱JavaScript®引擎可開始掃描指令碼以發現資源。在區塊736中,沙箱JavaScript®引擎可推測性地執行指令碼(或指令碼中所包括之JavaScript®程式碼之部分)。指令碼之推測性執行可包括僅執行最可能與發現外部資源相關的操作及/或程式碼之部分。在各種態樣中,推測性執行操作可與其他瀏覽器操作(例如,HTML預掃描563、HTML剖析568等)並行地執行及/或與其他指令碼之執行(不管是否為推測性的)並行地執行。
在一態樣中,指令碼之推測性執行可包括僅執行JavaScript®程式碼之對應於與發現資源相關之型樣的部分。
在一態樣中,作為區塊736之部分,沙箱JavaScript®引擎可基於試探法(例如,以減少執行時間)而執行JavaScript®程式碼之推測性執行。此等試探法可包括限制總執行時間、迴圈反覆之數目、遞歸深度、所支援特徵及/或程式碼之抽象解譯。
在一態樣中,作為區塊736之部分,沙箱JavaScript®引擎可限制自指令碼之推測性執行所產生之資料結構(例如,雜湊表、陣列等)的大小。完整資料結構可能不導致識別供下載之其他資源,因此可繞過完全產生/填入大型資料結構所需之處理時間。
在區塊738中,沙箱JavaScript®引擎可發現為了顯現HTML文件所需的但在HTML文件中未經明確請求之資源。在區塊740中,沙箱
JavaScript®引擎可告知(或繁衍)預先提取器以擷取所發現之資源。在區塊742中,沙箱JavaScript®引擎可放棄在區塊736中執行之處理的結果。
在區塊744中,預先提取器可定位由沙箱JavaScript®引擎在區塊738中發現之資源。在區塊746中,預先提取器可下載經定位之資源。在區塊748中,預先提取器可將所下載之資源保存至記憶體。
如上文所論述,HTML程式碼既可為嵌入式JavaScript®程式碼(稱為「內嵌指令碼」),亦可包括至JavaScript®程式碼之連結(稱為「外部指令碼」)。為了正確地處理HTML文件,必須以由HTML標準定義之特定次序來執行內嵌指令碼與外部指令碼兩者。
當並行地下載、剖析、分析及編譯多個指令碼時,該等指令碼變得準備好執行的次序可不同於由HTML標準定義之特定執行次序。若一指令碼未準備好執行,但其為由HTML標準定義之特定執行次序中的下一指令碼,則可能需要瀏覽器在執行對HTML文件之任何額外處理之前等待直至該指令碼變得準備好執行為止。各種態樣利用此等待時間來準備其他指令碼或資源以用於執行(其並非藉由HTML標準來調節)。可並行地及/或在其他指令碼之執行期間準備多個指令碼及資源。
另外,實際上並不執行HTML文件中所包括(亦即,嵌入於HTML文件中或連結至HTML文件)之所有指令碼,且提前準備所有指令碼以用於執行可浪費功率及處理資源。各種態樣可智慧地選擇將經準備以用於執行之指令碼。
以實例說明,HTML預先提取器可發現並下載所有所參考之指令碼(無序)且HTML剖析器可稍後以正確次序且在處理HTML文件之正確時間點組織該等指令碼之執行。
大體上必須維護指令碼之最終執行次序。然而,可並行地及/或
無序地執行與下載、剖析、分析及編譯指令碼相關聯的所有操作。
在一態樣中,可並行地(亦即,相對於彼此)及無序地(亦即,相對於由HTML標準定義之特定執行次序)準備HTML文件中所包括之指令碼以用於執行。此情形可藉由產生唯一識別符及/或簽章及/或使唯一識別符及/或簽章與每一指令碼相關聯來達成。簽章可基於指令碼之內容。適於用於各種態樣中之簽章及簽章處理程序之實例包括檔案偏移(針對內嵌指令碼)、訊息摘要演算法(例如,MD5)、安全雜湊演算法(SHA)、指令碼之URL、指令碼之URI、瀏覽器快取金鑰,及/或多種已知之簽章處理程序中之任一者。
圖7C說明智慧地準備HTML文件中所包括之指令碼以用於並行執行的態樣瀏覽器方法750。方法750之操作可由處理器與其他瀏覽器操作並行地執行。
在區塊752中,HTML掃描器/預先提取器可掃描HTML文件以查找結構資訊及/或發現資源(影像、CSS、指令碼等)。在區塊754中,HTML掃描器/預先提取器可發現HTML文件中之一或多個指令碼,且告知HTML剖析器(與HTML掃描器並行地執行)該等所發現之指令碼。在區塊756中,HTML掃描器/預先提取器可起始對外部指令碼之下載。
在區塊758中,HTML剖析器可產生每一所發現之指令碼(內嵌指令碼與外部指令碼兩者)之識別符(或簽章)及/或使每一所發現之指令碼與一識別符相關聯。在一態樣中,HTML剖析器可將所發現之指令碼之文字設定為其識別符。在一態樣中,HTML剖析器可使外部指令碼之URL/URI與外部指令碼相關聯(亦即,可將其URL/URI設定為其簽章),且執行摘要及/或雜湊演算法以計算內嵌指令碼之簽章。若指令碼之URL/URI不可用、並非唯一的及/或另外並不唯一地識別指令碼,則作為區塊758之部分,HTML剖析器可產生簽章並使用簽章來
識別彼指令碼。
在區塊760中,HTML剖析器可將指令碼及其相關聯之識別符或URL/URI發送至與HTML剖析器並行地執行之JavaScript®引擎(例如,在單獨執行緒中)。在區塊762中,HTML剖析器可執行各種HTML剖析器操作,諸如剖析HTML以發現其他指令碼。
在區塊772中,JavaScript®引擎可自HTML剖析器接收指令碼及相關聯之識別符、簽章或URL/URI。在區塊774中,JavaScript®引擎可準備(例如,剖析、分析及/或編譯)所接收之指令碼以用於執行。可跨越所有所接收之指令碼無序地及/或並行地執行準備操作(亦即,可一次準備多個指令碼)。在一態樣中,作為區塊774之部分,JavaScript®引擎可使用試探法(例如,經由抽象解譯)來在不執行程式碼之情況下偵測呼叫圖形,基於呼叫圖形而識別最可能執行之指令碼(或函式),及僅準備經判定為很可能執行之指令碼以用於執行。在區塊776中,JavaScript®引擎可使在指令碼之準備期間所產生的資訊(例如,經編譯之程式碼等)與彼指令碼之識別符、簽章或URL/URI相關聯。
在區塊764中,HTML剖析器可識別待執行之下一指令碼(例如,基於由HTML標準定義之執行次序)。在區塊766中,HTML剖析器可將待執行之下一指令碼之識別符(例如,指令碼之文字、簽章、URL/URI等)發送至JavaScript®引擎。在區塊768中,HTML剖析器可等待執行之結果或已執行指令碼的通知。在區塊770中,HTML剖析器可繼續執行HTML剖析器操作。
在區塊778中,JavaScript®引擎可自HTML剖析器接收識別符、簽章或URL/URI。在區塊780中,JavaScript®引擎可基於所接收之識別符、簽章或URL/URI而識別適當指令碼。在判定區塊782中,JavaScript®引擎可藉由(例如)判定是否已針對所識別之指令碼執行所
有剖析、分析及編譯操作來判定彼指令碼是否準備好立即執行。若JavaScript®引擎判定該指令碼準備好立即執行(亦即,判定區塊782=「是」),則在區塊786中,JavaScript®引擎可告知HTML剖析器執行之結果或執行已完成。
當判定該指令碼尚未準備好立即執行時(亦即,判定區塊782=「否」),在區塊784中,JavaScript®引擎可使用習知解決方案準備該指令碼以用於執行。在區塊786中,JavaScript®引擎可根據由HTML標準定義之特定執行次序來執行該指令碼。以此方式,方法750並行地(亦即,相對於彼此)及無序地(亦即,相對於由HTML標準定義之特定執行次序)準備HTML文件中所包括之指令碼以用於執行,且以由標準定義之次序來執行指令碼。
圖8說明處理經預先提取之資源的態樣瀏覽器方法800。在區塊802中,web瀏覽器組件(例如,經由提取管理器502)可起始對所發現之資源(例如,影像)之下載,可與其他瀏覽器操作(例如,HTML剖析等)之執行同時地(或並行地)下載/提取該所發現之資源。當下載及/或接收到與所發現之資源相關聯之所有資料時,在區塊804中,可將所下載之資料(例如,影像資料)發送至執行緒集區以用於解碼。在一態樣中,解碼操作可與其他瀏覽器操作同時執行。
在區塊806中,可解碼所下載之資料(例如,影像資料)。在區塊808中,可將經解碼資料添加至DOM分派器佇列。在區塊810中,DOM分派器組件504可將DOM樹及各別樹節點(例如,在影像資料之狀況下的「img」樹節點)之更新串列化。在區塊812中,可將資源(例如,影像)自處理清單(例如,未決影像之清單)移除。
圖9說明適於供各種態樣使用之CSS引擎512中之實例組件。CSS引擎512可經組態以執行三個主要分類之操作:CSS資源預先提取操作902、CSS剖析操作904及DOM樣式化操作906。
CSS剖析操作904可包括讀取CSS程式碼並建立記憶體中之資料結構(例如,CSS規則)之集合。CSS程式碼可嵌入於HTML中或作為單獨檔案而連結,且可儲存於不同伺服器上。傳統CSS引擎(例如,WebKit或Firefox中之CSS引擎)可在主瀏覽器執行緒中順序地剖析CSS。因此,若頁面使用嵌入之CSS,則HTML剖析器無法剖析HTML文件之其餘部分直至CSS引擎已剖析文件之標頭中的樣式元素為止。若頁面使用若干CSS檔案,則將順序地剖析所有該等CSS檔案(即使可能存在未充分利用之CPU核心亦如此)。若網站使用大型CSS檔案,則此CSS剖析串列化(亦即,CSS文件之串列處理)可造成嚴重變慢。各種態樣可使用非同步任務來避免CSS剖析串列化。
參看圖9,HTML剖析器506可經組態以在頁面載入操作期間針對DOM樹中之每一樣式元素繁衍CSS剖析570任務。類似地,每當新的CSS檔案到達時,提取管理器502便可繁衍CSS剖析570任務。因此,多個CSS剖析570任務可與HTML剖析器506及/或HTML剖析操作568同時執行。
因為樣式表(CSS)及規則(CSS規則)之全序可為樣式化操作574之關鍵部分,所以瀏覽器系統500可經組態以確保全序係相同的,如同已以程式設計人員預期之次序剖析所有樣式表(CSS)一般。
在各種態樣中,剖析任務或剖析操作568、570中之每一者可接收唯一的順序剖析器ID。瀏覽器系統500可接著使用彼ID來重新建立文件中之樣式表的排序。
DOM樣式化操作906可使得CSS引擎512能夠使用由CSS剖析器522建立之資料結構來判定DOM樹中之節點的樣式。對於每一節點,CSS引擎512可執行規則匹配操作以找到選擇器匹配該節點的所有規則。規則匹配大體上每一節點傳回許多(且有時相衝突)規則。使用串接,CSS引擎512可將權重指派給規則並選擇具有最大權重之規則。
將節點樣式化中的最後步驟可包括DOM樣式化操作906,其藉由使用藉由串接演算法選擇之規則來建立樣式資料結構並將樣式資料結構附接至DOM。可並行地對若干節點執行規則匹配操作及串接操作(只要強制執行某些相依性即可)。
各種態樣可在多個瀏覽器操作及/或瀏覽器遍次之同時執行(或重疊)期間重視/強制執行現有HTML及JavaScript®語義。DOM樹可為供所有瀏覽器遍次使用之主要資料結構。在各種態樣中,可將對DOM樹(其可藉由HTML5剖析器建構而成)之存取串列化以符合HTML5規範。另外,為了考慮較大之並行性,可為每一遍次提供對私有之同時資料結構(亦即,除DOM樹之外)的存取。在一態樣中,此額外資料結構可為佈局樹。
圖10說明一實施例並行DOM樣式化方法1000,其中並行地對若干節點執行規則匹配及串接操作。在區塊1002中,CSS引擎512可遍歷DOM樹且針對每一DOM節點繁衍兩個不同任務:匹配任務及節點樣式化任務。在區塊1004中,匹配任務可針對DOM節點執行規則匹配及串接操作。在區塊1006中,樣式化任務可建立描述DOM節點之樣式資料結構。在區塊1008中,樣式化任務可將樣式資料結構附接至DOM樹。
圖11A說明適於用於各種態樣中之實例DOM樹。圖11B說明對應於圖11A中所說明之實例DOM樹之實例任務定向非循環圖(DAG)。具體言之,圖11B說明匹配任務(其表示為三角形)可如何完全獨立於彼此且獨立於樣式化任務(其表示為方形),而樣式化任務相依於彼此且相依於匹配任務。大體上,匹配任務之並行執行僅藉由計算系統中之處理核心的數目來限制。
如上文所提及,樣式化任務可相依於彼此及/或相依於匹配任務。可能需要每一樣式化任務在其可執行之前滿足兩個相依性。第
一,樣式化任務僅可在對相同節點起作用之匹配任務完成執行之後才執行。此係因為樣式化任務使用藉由匹配任務選擇之規則來建置樣式資料結構。第二,對一節點起作用之樣式化任務僅可在對該節點之親代起作用的樣式化任務完成執行之後才執行。此係因為該節點之樣式性質中之一些樣式性質可繼承自其親代。舉例而言,CSS程式碼p{color:inherit}指示瀏覽器使用與<p>節點之親代相同之前景色彩來顯現<p>節點。
藉由匹配任務執行之規則匹配操作在計算、功率、潛時等方面可為昂貴的。舉例而言,若CSS引擎512需要判定規則「h1 p div{color:red}」是否適用於<div>元素E,則匹配演算法可能需要查明E之上階中之任一者是否為<p>元素及<p>之上階中之任一者是否為<h1>元素。此情形可能需要沿DOM樹一直行進至根部,此可為昂貴操作。另外,典型網站可能需要400,000次以上之此等DOM樹查核行程。
為了減少DOM樹查核行程之數目,各種態樣可包括儲存關於DOM節點之上階之資訊的布隆濾波器(bloom filter)。該布隆濾波器可將至根部(A)之DOM樹查核行程的數目減少90%,從而將在樣式化演算法中所花費之時間減半。
布隆濾波器可為大型資料結構,且可能需要CSS引擎512針對每一樣式化任務複製布隆濾波器。由於複製成本遠超效能增益,因此各種態樣可使用比布隆濾波器小之結構。此傾斜可藉由減少複製操作之數目及/或減小所複製之元素之大小來改良瀏覽器效能。
如上文所描述,各種態樣可使用元素id及類別屬性來預測是否應預先提取CSS檔案中所參考之影像。在一態樣中,可將此等元素及屬性儲存於記錄此等元素及屬性中之每一者出現於文件中之次數的資料庫中。HTML剖析器亦可將資訊添加至此資料庫。
在規則匹配演算法開始之前,CSS引擎512可根據資料庫中之項目的頻率來對該等項目分類。瀏覽器系統500可接著將位元指派給位元映射資料結構(稱作「匹配位元映射」)中之每一項目。若id及類別之數目大於位元映射大小,則可將單一位元指派給多個項目。由於此等位元映射小,因此可將該等位元映射複製許多次而不會顯著影響計算裝置之效能。
在規則匹配操作期間,每一樣式化任務可自其親代接收一匹配位元映射。該匹配位元映射可記錄其上階之id、類別及標記。樣式化任務可使用匹配位元映射來濾除可能決不匹配之規則。此後,樣式化任務可將其節點之id、類別及標記添加至匹配位元映射且將複本發送至其後代。平均起來,此等匹配位元映射避免了至DOM樹之根部的90%查核行程,僅具有0.024%之誤肯定。
可能因為匹配位元映射並不記錄遇到標籤及id之次序而發生誤肯定。舉例而言,為了判定規則「h2 h1 p{color:red}」是否適用於某一節點<p>及匹配位元映射指示<h1>與<h2>兩者為<p>之上階,可能需要瀏覽器系統500沿DOM樹行進以檢查<h2>是否為<h1>之上階。若並非此狀況,則其為誤肯定情形。此等誤肯定可能不會造成頁面不正確地顯現,但可浪費CPU循環。
在一態樣中,佈局及顯現操作(諸如,由顯現引擎子系統560進行)可包括執行將經樣式化之DOM變換成位元映射影像以用於顯示於螢幕上的計算。可組合應用於位元映射影像之DOM及CSS樣式以形成新的樹結構(稱為佈局樹),其中每一節點表示網頁上之一視覺元素。可將每一DOM節點轉譯成零個、一個或許多佈局樹節點。顯現引擎子系統560可將佈局樹視為輸入且計算每一元素佔據之頁面之區。可將每一元素之樣式視為對佈局之約束(例如,內嵌/區塊顯示、浮動、寬度、高度等)。
顯現引擎子系統560可遍歷佈局樹且求解約束(例如,作為佈局操作582之部分)以判定每一元素之最終寬度、高度及位置。顯現引擎子系統560亦可在佈局樹(可對其註釋以佈局引擎之計算的結果)上行進(例如,作為顯現操作584之部分)且根據CSS之規則在螢幕上繪製其。
由於佈局操作582及顯現操作584緊密相關且一起以管線方式操作,因此,在一態樣中,可由單一組件(諸如,佈局及顯現引擎516)來執行該等操作582、584。
在各種態樣中,顯現引擎子系統560可經組態以執行佈局操作582,使得在四個遍次中對佈局樹執行CSS佈局演算法。在每一遍次中,資訊可以比習知途徑中更受控制之方式流經樹,從而曝露佈局處理程序中之並行性的可能性。
在一態樣中,顯現引擎子系統560可對佈局樹執行四個遍次:最少或較佳寬度計算遍次;寬度計算遍次;區塊格式化內容脈絡流遍次;及絕對位置計算。
第一遍次(亦即,最小或較佳寬度計算遍次)可為沿樹向上傳播寬度以將最小寬度及較佳寬度指派給每一元素的自底向上遍次。以實例說明,對於含有一段文字之div元素,最小寬度可為分行符號置放於每一字之後時的寬度,且較佳寬度可為無任何分行符號之寬度。
第二遍次(亦即,寬度計算遍次)可為計算每一元素之最終寬度的自頂向下遍次。取決於元素之樣式,可自其親代之寬度或最小/較佳寬度導出最終寬度。
在第三遍次(亦即,區塊格式化內容脈絡流遍次)期間,每一元素具有已知之寬度,且其內容可用以計算其高度。以實例說明,對於含有一段文字之div元素,在判定寬度之後,可將文字置放於其內部,且可將每一行之高度加總以找出div之總高度。傳播方向可為複雜的。可將內容用以計算其高度的元素稱作區塊格式化內容脈絡
(BFC)。元素是否為區塊格式化內容脈絡可藉由其CSS樣式來判定。
DOM樹中之區塊格式化內容脈絡元素可形成一邏輯樹,該邏輯樹可上覆至DOM上。上覆樹之區塊格式化內容脈絡可自底向上行進,且至瀏覽器系統300到達DOM樹之根部為止,其已佈局整個網頁。在此階段結束時,將告知瀏覽器系統500所有元素之高度以及該等元素在含有其之區塊格式化內容脈絡內的相對位置。
第四遍次(亦即,絕對位置計算遍次)可為一自頂向下遍次,其使用來自先前遍次的在每一區塊格式化內容脈絡內之相對位置來計算頁面上之每一元素的絕對位置。
在一態樣中,可藉由沿佈局樹行進使得在前景元素之前瀏覽背景元素來達成顯現。各種態樣可以與每一元素之樣式一致的方式將每一元素繪製至圖形緩衝器中,且在螢幕上顯示緩衝器之內容(例如,經由GUI)。此等顯現操作可由於組成步驟使用之記憶體頻寬而為計算上昂貴的。各種態樣可經組態以經由各種組件/子系統之並行或同時執行來減小每一組成步驟所需之記憶體頻寬。
大體上,歸因於佈局及顯現操作對自頁面載入時間至使用者介面之回應性的一切事物的影響,佈局及顯現操作之效能為重要的。另外,佈局及顯現操作與其他重要任務(如執行JavaScript®)競爭以得到CPU循環。
連同順序最佳化一起,各種態樣可包括粗糙粒度級及精細粒度級並行性以改良佈局及顯現引擎之效能。此等兩種途徑可為互補的。在粗糙等級下,態樣瀏覽器可將儘可能多的工作移出臨界路徑並將其移至工作者執行緒中。在精細等級下,態樣瀏覽器可將佈局及顯現演算法/方法並行化。
在習知web瀏覽器中,操縱DOM之任務(例如,剖析或JavaScript®)決不與佈局及顯現任務同時執行,此情形確保兩者彼此
不干擾。相比之下,各種態樣重疊此等兩種類型之任務。因而,在各種態樣中,在每次DOM改變時可能不更新佈局樹。
各種態樣可將佈局樹與DOM分離(或保持分離)。可在通常將發生佈局及顯現操作之時間作為分批操作來執行佈局樹之更新;此常常在剖析或JavaScript®執行任務完成之後。以此方式將更新分群可意謂:可能需要瀏覽器系統500維護額外狀態資訊以識別已改變之DOM之部分,但將避免執行不必要之工作,此係由於並未針對DOM之每一中間狀態來更新佈局樹。
當佈局樹準備好進行對結果起作用之工作時,各種態樣可更新佈局樹。佈局樹可為與DOM分離之實體。可執行所有DOM改變而不影響佈局樹。相反地,一旦佈局樹經更新,顯現引擎子系統560便不需要以任何方式存取DOM。此情形實現並行性,且亦意謂佈局樹必須重複習知地將僅儲存於DOM中之某些資訊。詳言之,佈局樹可含有對文字、影像、CSS樣式及HTML畫布元素之直接參考。
文字及影像可為永久不變的且可安全地與DOM共用。CSS樣式可為邏輯上永久不變的,但CSS樣式物件中之資料的量可能太大(及/或其可能經太頻繁地更新)以致於每次無法複製整個物件。因此,在一態樣中,可在內部將每一樣式物件劃分成許多更小之子樣式物件。可使用寫入時複製(copy-on-write)途徑來更新共用之子樣式。可在適當位置更新未共用之子樣式。因此,複製樣式物件可能僅需要建立共用相同子樣式之新樣式物件,此情形可便宜得多。另外,可將子樣式分群使得經一起更新之CSS性質在同一子樣式中,此情形可使發生更新時的子樣式複本最小化。此配置允許DOM、佈局及顯現組件參考相同CSS樣式而不在可為其他CSS樣式看見之一位置/組件中作出改變。類似寫入時複製途徑可用於HTML畫布元素。
佈局樹與DOM樹之分離實現顯現引擎子系統560中之粗糙粒度級
並行性。當網頁準備好第一次向使用者顯示時,瀏覽器系統500可建立一工作項目,該工作項目初始化佈局樹並將其交遞至顯現引擎子系統560以用於處理。將佈局及顯現操作分離至不同執行緒中允許瀏覽器系統500之其餘部分前移,諸如,可執行JavaScript®,可處理使用者介面(UI)事件,及可計算CSS樣式化,等。
當顯現引擎子系統560結束其任務並在螢幕上顯示頁面時,其可提交「LR工作項目」以更新佈局樹,且重新開始該處理程序。僅「LR工作項目」需要排他性存取DOM,且一旦樹經更新,便可並行地及/或非同步地執行其他操作。
某些JavaScript® DOM API(例如,getComputedStyle及offsetTop)可能需要關於佈局演算法計算之結果的資訊。可能需要暫停顯現引擎子系統560直至可獲得結果為止。若顯現引擎子系統560在主執行緒中執行佈局,則其可重複正在LR工作項目(或LR執行緒)中執行之計算,此可浪費時間及能量。
在一態樣中,顯現引擎子系統560可經組態以記住佈局樹是否具有最新佈局資訊。若佈局樹具有最新佈局資訊,則可立即傳回一同步佈局請求。若佈局樹不具有最新佈局資訊,則可在LR執行緒中像通常一樣執行佈局操作,且可請求顯現引擎子系統560在佈局處理程序完成時通知主執行緒。此情形儘可能迅速地遞送所需之結果,同時防止重複工作。
除並行性之外,將佈局樹與DOM分離的另一優點在於:可將顯現引擎子系統560視為在網頁之間共用之服務。由於佈局樹並不返回參考其建構所自之DOM,因此同一顯現引擎子系統560可管理所有佈局樹而不管其來源。此意謂昂貴、有限之顯現相關資源(如圖形緩衝器)在整個瀏覽器系統500中僅需要一執行個體。
由佈局樹提供之又一優點係在於使用者與正快速改變之頁面互
動時判定使用者之意圖方面的增加之靈活性。舉例而言,若使用者點選正藉由JavaScript®在螢幕上來回移動的按鈕,則在改變DOM之JavaScript®與出現於螢幕上的結果之間存在延遲,此係因為佈局及顯現操作花費時間。至記錄使用者之點選的時間為止,DOM可能已經更新且自瀏覽器之觀點而言方框之位置可能已改變。即使使用者之滑鼠指標位於方框正上方,對點選之嘗試仍可為不成功的。然而,因為佈局樹與DOM分離,所以瀏覽器系統500可存取當前工作樹及顯示於螢幕上之最新樹。此情形使得瀏覽器系統500能夠基於其點選時所見(而非DOM之當前狀態)而判定使用者意欲點選之物件,從而產生經改良之所感知回應性及更好之使用者體驗。
各種態樣可實施於多種行動計算裝置上,且該等行動計算裝置之實例說明於圖12中。具體言之,圖12為適於供該等態樣中之任一者使用的呈智慧型電話/行動電話1200之形式的行動收發器裝置之系統方塊圖。行動電話1200可包括耦接至內部記憶體1202、顯示器1203及揚聲器1208之處理器1201。另外,行動電話1200可包括用於發送及接收電磁輻射之天線1204,天線1204可連接至耦接至處理器1201之無線資料鏈路及/或蜂巢式電話收發器1205。行動電話1200通常亦包括選單選擇按鈕或搖臂開關1206以用於接收使用者輸入。
典型行動電話1200亦包括聲音編碼/解碼(CODEC)電路1213,其將自麥克風接收之聲音數位化成適於無線傳輸之資料封包且解碼所接收之聲音資料封包以產生經提供至揚聲器1208以產生聲音的類比信號。又,處理器1201、無線收發器1205及CODEC 1213中之一或多者可包括數位信號處理器(DSP)電路(未單獨地展示)。行動電話1200可進一步包括ZigBee收發器(亦即,IEEE 802.15.4收發器)1213以用於達成無線裝置或其他類似通信電路(例如,實施Bluetooth®或WiFi協定之電路等)之間的低功率短程通信。
各種態樣可實施於多種市售伺服器裝置中之任一者(諸如,圖13中所說明之伺服器1300)上。此伺服器1300通常包括耦接至揮發性記憶體1302及大容量非揮發性記憶體(諸如,磁碟機1303)之處理器1301。伺服器1300亦可包括耦接至處理器1301之軟碟驅動器、緊密光碟(CD)或DVD光碟驅動器1311。伺服器1300亦可包括耦接至處理器1301之網路存取埠1306以用於與網路1305(諸如,耦接至其他通信系統電腦及伺服器之區域網路)建立資料連接。
其他形式之計算裝置亦可受益於各種態樣。此等計算裝置通常包括圖14中所說明之組件,圖14說明實例個人膝上型電腦1400。此個人電腦1400大體上包括耦接至揮發性記憶體1402及大容量非揮發性記憶體(諸如,磁碟機1403)之處理器1401。電腦1400亦可包括耦接至處理器1401之緊密光碟(CD)及/或DVD驅動器1404。電腦裝置1400亦可包括耦接至處理器1401之若干連接器埠,以用於建立資料連接或接收外部記憶體裝置,諸如用於將處理器1401耦接至網路之網路連接電路1405。電腦1400可進一步耦接至鍵盤1408、指標裝置(諸如,滑鼠1410)及顯示器1409,如電腦技術中所熟知的。
處理器1201、1301、1401可為任何可程式化微處理器、微電腦或一或多個多處理器晶片,其可藉由軟體指令(應用程式)組態以執行多種功能,該等功能包括下文所描述之各種態樣之功能。在一些行動裝置中,可提供多個處理器1301,諸如專用於無線通信功能之一處理器及專用於執行其他應用程式之一處理器。通常,可在存取軟體應用程式並將軟體應用程式載入至處理器1201、1301、1401中之前將軟體應用程式儲存於內部記憶體1202、1302、1303、1402中。處理器1201、1301、1401可包括足以儲存應用程式軟體指令之內部記憶體。
各種態樣可實施於任何數目個單一或多處理器系統中。大體上,在短時間配量中於處理器上執行處理程序使得看來似乎為多個處
理程序同時在單一處理器上執行。當在一時間配量結束時自處理器移除處理程序時,將關於該處理程序之當前操作狀態的資訊儲存於記憶體中,因此該處理程序可在其返回至在處理器上執行時無縫地恢復執行其操作。此操作狀態資料可包括處理程序之位址空間、堆疊空間、虛擬位址空間、暫存器集影像(例如,程式計數器、堆疊指標、指令暫存器、程式狀態字等)、帳戶資訊、權限、存取限制及狀態資訊。
一處理程序可繁衍其他處理程序,且所繁衍之處理程序(亦即,子代處理程序)可繼承繁衍處理程序(亦即,親代處理程序)之一些權限及存取限制(亦即,內容脈絡)。處理程序可為重量型處理程序,其包括多個輕量型處理程序或執行緒,該等輕量型處理程序或執行緒為與其他處理程序/執行緒共用其內容脈絡(例如,位址空間、堆疊、權限及/或存取限制等)之全部或部分的處理程序。因此,單一處理程序可包括共用、存取單一內容脈絡(亦即,處理器之內容脈絡)及/或在單一內容脈絡(亦即,處理器之內容脈絡)內操作之多個輕量型處理程序或執行緒。
僅作為說明性實例提供上述方法描述及處理程序流程圖且並不意欲需要或暗示必須以所呈現之次序執行各種態樣之區塊。如熟習此項技術者將瞭解,可以任何次序執行上述態樣中之區塊的次序。諸如「此後」、「接著」、「接下來」等之詞語並不意欲限制區塊之次序;此等詞語僅用以引導讀者閱讀該等方法之描述。另外,對呈單數形式之請求項元素之任何參考(例如,使用冠詞「一」或「該」)不應被解釋為將元素限於單數形式。
結合本文中所揭示之態樣而描述之各種說明性邏輯區塊、模組、電路及演算法區塊可實施為電子硬體、電腦軟體或兩者之組合。為了清楚地說明硬體與軟體之此可互換性,上文已大體在功能性方面描述了各種說明性組件、區塊、模組、電路及區塊。將此功能性實施
為硬體抑或軟體取決於特定應用及強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用以變化之方式來實施所描述之功能性,但不應將此等實施決策解譯為導致背離本發明之範疇。
可藉由以下各者來實施或執行用以實施結合本文中所揭示之態樣而描述之各種說明性邏輯、邏輯區塊、模組及電路的硬體:通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述之功能的任何組合。通用處理器可為微處理器,但在替代例中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可實施為計算裝置之組合,例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器,或任一其他此組態。或者,可由特定於一給定功能之電路來執行一些區塊或方法。
在一或多個例示性態樣中,所描述之功能可實施於硬體、軟體、韌體或其任何組合中。若實施於軟體中,則該等功能可作為一或多個指令或程式碼儲存於非暫時性電腦可讀媒體或非暫時性處理器可讀媒體上。本文中所揭示之方法或演算法的步驟可體現於可駐留於非暫時性電腦可讀或處理器可讀儲存媒體上之處理器可執行軟體模組中。非暫時性電腦可讀或處理器可讀儲存媒體可為可由電腦或處理器存取之任何儲存媒體。以實例說明但非限制,此等非暫時性電腦可讀或處理器可讀媒體可包括RAM、ROM、EEPROM、FLASH記憶體、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存裝置或可用以以指令或資料結構之形式來儲存所要程式碼且可由電腦存取的任何其他媒體。如本文中所使用,磁碟及光碟包括緊密光碟(CD)、雷射光碟、光學光碟、數位影音光碟(DVD)、軟性磁碟及藍光光碟,其中磁碟通常以磁性方式再生資料,而光碟藉由雷射以光學方式再生資料。
以上各者之組合亦包括於非暫時性電腦可讀及處理器可讀媒體之範疇內。另外,方法或演算法之操作可作為程式碼及/或指令中之一者或任何組合或集合而駐留於非暫時性處理器可讀媒體及/或電腦可讀媒體上,可將該非暫時性處理器可讀媒體及/或電腦可讀媒體併入至電腦程式產品中。
提供對所揭示態樣之上述描述以使得任何熟習此項技術者能夠製造或使用本發明。對此等態樣之各種修改將容易為熟習此項技術者所顯而易見,且可在不背離本發明之精神或範疇的情況下將本文所定義之一般原理應用於其他態樣。因此,本發明並不意欲限於本文中所展示之態樣,而應符合與以下申請專利範圍及本文中所揭示之原理及新穎特徵一致的最廣範疇。
100‧‧‧系統單晶片(SOC)
102‧‧‧數位信號處理器(DSP)
104‧‧‧數據機處理器
106‧‧‧圖形處理器
108‧‧‧應用處理器
110‧‧‧共處理器
112‧‧‧記憶體元件
114‧‧‧定製電路
116‧‧‧系統組件及資源
118‧‧‧時鐘
120‧‧‧電壓調節器
124‧‧‧互連件/匯流排模組
Claims (16)
- 一種準備一HTML文件中所包括之指令碼的方法,該方法包含:掃描該HTML文件以發現複數個指令碼;將該複數個指令碼發送至一指令碼引擎以準備好執行;在該指令碼引擎準備該複數個指令碼以用於執行時,剖析該HTML文件;自該複數個指令碼中識別待執行之一下一指令碼;將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎;暫時中止對該HTML文件之該剖析;接收指示已執行待執行之該所識別之下一指令碼的一通知;及回應於接收到該通知而恢復執行對該HTML文件之該剖析。
- 如請求項1之方法,其中將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎包含:將待執行之該所識別之下一指令碼發送至該指令碼引擎。
- 如請求項1之方法,其進一步包含產生該複數個指令碼中之每一者之一識別符,其中:將該複數個指令碼發送至一指令碼引擎包含將該複數個指令碼及該等識別符發送至該指令碼引擎;且將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎包含將待執行之該下一指令碼之該識別符發送至該指令碼引擎,特別地其中產生該複數個指令碼中之每一者之一識別符包含使至少一指令碼與一統一資源識別符(URI)相關聯,或 特別地其中產生該複數個指令碼中之每一者之一識別符包含產生至少一指令碼之一簽章,或特別地其中產生該複數個指令碼中之每一者之一識別符包含產生包括至少一指令碼之文字之至少一識別符。
- 如請求項1之方法,其中:掃描一HTML文件以發現複數個指令碼包含在一第一處理器中掃描該HTML文件;且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件包含在一第二處理器中剖析該HTML文件。
- 如請求項1之方法,其中:掃描一HTML文件以發現複數個指令碼包含藉由在一處理器中執行之一第一處理程序掃描該HTML文件;且在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件包含藉由在該處理器中執行之一第二處理程序剖析該HTML文件,特別地其中在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件包含:在該指令碼引擎剖析、分析及編譯一第一指令碼且並行地該指令碼引擎剖析、分析及編譯一第二指令碼時,剖析該HTML文件。
- 如請求項1之方法,其中在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件包含:在該指令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時,剖析該HTML文件。
- 如請求項1之方法,其中自該複數個指令碼中識別待執行之一下一指令碼包含基於一所定義之執行次序而識別待執行之該下一指令碼。
- 一種計算裝置,其包含:用於掃描一HTML文件以發現複數個指令碼之構件;用於將該複數個指令碼發送至一指令碼引擎以準備好執行之構件;用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件;用於自該複數個指令碼中識別待執行之一下一指令碼的構件;用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件;用於暫時中止對該HTML文件之該剖析的構件;用於接收指示已執行待執行之該所識別之下一指令碼的一通知的構件;及用於回應於接收到該通知而恢復執行對該HTML文件之該剖析的構件。
- 如請求項8之計算裝置,其中用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件包含:用於將待執行之該所識別之下一指令碼發送至該指令碼引擎的構件。
- 如請求項8之計算裝置,其進一步包含用於產生該複數個指令碼中之每一者之一識別符的構件,其中:用於將該複數個指令碼發送至一指令碼引擎之構件包含用於將該複數個指令碼及該等識別符發送至該指令碼引擎的構件;且用於將對應於待執行之該所識別之下一指令碼的資訊發送至該指令碼引擎的構件包含用於將待執行之該下一指令碼之該識別符發送至該指令碼引擎的構件,特別地其中用於產生該複數個指令碼中之每一者之一識別符 的構件包含用於使至少一指令碼與一統一資源識別符(URI)相關聯的構件,或特別地其中用於產生該複數個指令碼中之每一者之一識別符的構件包含用於產生至少一指令碼之一簽章的構件,或特別地其中用於產生該複數個指令碼中之每一者之一識別符的構件包含用於產生包括至少一指令碼之文字之至少一識別符的構件。
- 如請求項8之計算裝置,其中:用於掃描一HTML文件以發現複數個指令碼之構件包含用於在一第一處理器中掃描該HTML文件之構件;且用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件包含用於在一第二處理器中剖析該HTML文件之構件。
- 如請求項8之計算裝置,其中:用於掃描一HTML文件以發現複數個指令碼之構件包含用於藉由在一處理器中執行之一第一處理程序掃描該HTML文件的構件;且用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件包含用於藉由在該處理器中執行之一第二處理程序剖析該HTML文件的構件,特別地其中用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件包含:用於在該指令碼引擎剖析、分析及編譯一第一指令碼且並行地該指令碼引擎剖析、分析及編譯一第二指令碼時剖析該HTML文件的構件。
- 如請求項8之計算裝置,其中用於在該指令碼引擎準備該複數個指令碼以用於執行時剖析該HTML文件之構件包含:用於在該指 令碼引擎以不同於執行該複數個指令碼之一執行次序的一準備次序準備該複數個指令碼以用於執行時剖析該HTML文件的構件。
- 如請求項8之計算裝置,其中用於自該複數個指令碼中識別待執行之一下一指令碼的構件包含用於基於一所定義之執行次序而識別待執行之該下一指令碼的構件。
- 如請求項8至14之任一者之計算裝置,其中各種構件由經組態有多個處理器可執行指令之一處理器實施。
- 一種非暫時性電腦可讀儲存媒體,其上儲存有處理器可執行軟體指令,該等處理器可執行軟體指令經組態以使得一處理器當被執行時執行該等方法請求項1至7之任一者之該等步驟。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261683999P | 2012-08-16 | 2012-08-16 | |
US201261684594P | 2012-08-17 | 2012-08-17 | |
US13/722,066 US20140053056A1 (en) | 2012-08-16 | 2012-12-20 | Pre-processing of scripts in web browsers |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201411483A TW201411483A (zh) | 2014-03-16 |
TWI569204B true TWI569204B (zh) | 2017-02-01 |
Family
ID=50100979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102122788A TWI569204B (zh) | 2012-08-16 | 2013-06-26 | web瀏覽器中之指令碼之預處理 |
Country Status (8)
Country | Link |
---|---|
US (2) | US20140053056A1 (zh) |
EP (1) | EP2885703B1 (zh) |
JP (1) | JP5989248B2 (zh) |
KR (1) | KR101688339B1 (zh) |
CN (1) | CN104583949A (zh) |
IN (1) | IN2015MN00095A (zh) |
TW (1) | TWI569204B (zh) |
WO (1) | WO2014028115A1 (zh) |
Families Citing this family (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9160624B2 (en) * | 2012-07-03 | 2015-10-13 | Opera Software Ireland Limited | Linked list scripting engine |
US20140053064A1 (en) | 2012-08-16 | 2014-02-20 | Qualcomm Incorporated | Predicting the usage of document resources |
US9898445B2 (en) | 2012-08-16 | 2018-02-20 | Qualcomm Incorporated | Resource prefetching via sandboxed execution |
EP2744173B1 (en) * | 2012-10-26 | 2018-08-15 | Huawei Device (Dongguan) Co., Ltd. | Multiple-service processing method and browser |
US9021037B2 (en) | 2012-12-06 | 2015-04-28 | Airwatch Llc | Systems and methods for controlling email access |
US8826432B2 (en) | 2012-12-06 | 2014-09-02 | Airwatch, Llc | Systems and methods for controlling email access |
US8862868B2 (en) * | 2012-12-06 | 2014-10-14 | Airwatch, Llc | Systems and methods for controlling email access |
US8978110B2 (en) | 2012-12-06 | 2015-03-10 | Airwatch Llc | Systems and methods for controlling email access |
US9787686B2 (en) | 2013-04-12 | 2017-10-10 | Airwatch Llc | On-demand security policy activation |
WO2014205688A1 (en) * | 2013-06-26 | 2014-12-31 | Verizon Patent And Licensing Inc. | Image decoding method and apparatus for browser |
US9270647B2 (en) * | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US8954583B1 (en) | 2014-01-20 | 2015-02-10 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9544329B2 (en) | 2014-03-18 | 2017-01-10 | Shape Security, Inc. | Client/server security by an intermediary executing instructions received from a server and rendering client application instructions |
WO2015153677A1 (en) * | 2014-03-31 | 2015-10-08 | Open Garden Inc. | System and method for improving webpage loading speeds |
US9210171B1 (en) | 2014-05-29 | 2015-12-08 | Shape Security, Inc. | Selectively protecting valid links to pages of a web site |
US9083739B1 (en) | 2014-05-29 | 2015-07-14 | Shape Security, Inc. | Client/server authentication using dynamic credentials |
KR101768181B1 (ko) | 2014-06-26 | 2017-08-16 | 구글 인코포레이티드 | 최적화된 브라우저 렌더링 프로세스 |
JP6386089B2 (ja) * | 2014-06-26 | 2018-09-05 | グーグル エルエルシー | 最適化されたブラウザレンダリングプロセス |
EP3161668B1 (en) | 2014-06-26 | 2020-08-05 | Google LLC | Batch-optimized render and fetch architecture |
US9921632B2 (en) * | 2014-07-18 | 2018-03-20 | Qualcomm Incorporated | Pausing scripts in web browser background tabs |
US9003511B1 (en) | 2014-07-22 | 2015-04-07 | Shape Security, Inc. | Polymorphic security policy action |
US9753904B2 (en) * | 2014-07-25 | 2017-09-05 | Qualcomm Incorporated | Fast rendering of websites containing dynamic content and stale content |
US9438625B1 (en) | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9954893B1 (en) | 2014-09-23 | 2018-04-24 | Shape Security, Inc. | Techniques for combating man-in-the-browser attacks |
US9800602B2 (en) | 2014-09-30 | 2017-10-24 | Shape Security, Inc. | Automated hardening of web page content |
US9608975B2 (en) | 2015-03-30 | 2017-03-28 | Shape Security, Inc. | Challenge-dynamic credential pairs for client/server request validation |
US11070608B2 (en) | 2015-06-17 | 2021-07-20 | Fastly, Inc. | Expedited sub-resource loading |
WO2017007705A1 (en) | 2015-07-06 | 2017-01-12 | Shape Security, Inc. | Asymmetrical challenges for web security |
US11102313B2 (en) * | 2015-08-10 | 2021-08-24 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
US10582001B2 (en) * | 2015-08-11 | 2020-03-03 | Oracle International Corporation | Asynchronous pre-caching of synchronously loaded resources |
US9959100B2 (en) | 2015-08-12 | 2018-05-01 | Oracle International Corporation | Efficient storage and transfer of iOS binary files |
US10452497B2 (en) | 2015-08-14 | 2019-10-22 | Oracle International Corporation | Restoration of UI state in transactional systems |
US10013668B2 (en) | 2015-08-14 | 2018-07-03 | Oracle International Corporation | Secure storage of enterprise certificates for cloud services |
US10419514B2 (en) | 2015-08-14 | 2019-09-17 | Oracle International Corporation | Discovery of federated logins |
US9767040B2 (en) * | 2015-08-31 | 2017-09-19 | Salesforce.Com, Inc. | System and method for generating and storing real-time analytics metric data using an in memory buffer service consumer framework |
US10582012B2 (en) | 2015-10-16 | 2020-03-03 | Oracle International Corporation | Adaptive data transfer optimization |
US10212130B1 (en) | 2015-11-16 | 2019-02-19 | Shape Security, Inc. | Browser extension firewall |
US10079854B1 (en) * | 2015-12-18 | 2018-09-18 | Amazon Technologies, Inc. | Client-side protective script to mitigate server loading |
US10575007B2 (en) | 2016-04-12 | 2020-02-25 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of blocks in a graphics pipeline |
CN105868412B (zh) * | 2016-04-28 | 2019-05-03 | 焦点科技股份有限公司 | 一种基于b2b平台的多线程数据抓取方法 |
US10581820B2 (en) | 2016-05-11 | 2020-03-03 | Oracle International Corporation | Key generation and rollover |
US9838377B1 (en) | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Task segregation in a multi-tenant identity and data security management cloud service |
US10425386B2 (en) | 2016-05-11 | 2019-09-24 | Oracle International Corporation | Policy enforcement point for a multi-tenant identity and data security management cloud service |
US10878079B2 (en) | 2016-05-11 | 2020-12-29 | Oracle International Corporation | Identity cloud service authorization model with dynamic roles and scopes |
US10341410B2 (en) | 2016-05-11 | 2019-07-02 | Oracle International Corporation | Security tokens for a multi-tenant identity and data security management cloud service |
US10454940B2 (en) | 2016-05-11 | 2019-10-22 | Oracle International Corporation | Identity cloud service authorization model |
CN107454041B (zh) | 2016-05-31 | 2020-06-02 | 阿里巴巴集团控股有限公司 | 防止服务器被攻击的方法及装置 |
CN105933160B (zh) * | 2016-06-23 | 2020-02-18 | 四川长虹电器股份有限公司 | 在Android智能电视上实现有线网络快速连接的方法 |
CN106873961B (zh) * | 2016-07-27 | 2021-09-28 | 创新先进技术有限公司 | 通过移动浏览器唤醒app应用的方法及装置 |
US10530578B2 (en) | 2016-08-05 | 2020-01-07 | Oracle International Corporation | Key store service |
US10263947B2 (en) | 2016-08-05 | 2019-04-16 | Oracle International Corporation | LDAP to SCIM proxy service |
US10505941B2 (en) | 2016-08-05 | 2019-12-10 | Oracle International Corporation | Virtual directory system for LDAP to SCIM proxy service |
US10255061B2 (en) | 2016-08-05 | 2019-04-09 | Oracle International Corporation | Zero down time upgrade for a multi-tenant identity and data security management cloud service |
US10585682B2 (en) | 2016-08-05 | 2020-03-10 | Oracle International Corporation | Tenant self-service troubleshooting for a multi-tenant identity and data security management cloud service |
US10516672B2 (en) | 2016-08-05 | 2019-12-24 | Oracle International Corporation | Service discovery for a multi-tenant identity and data security management cloud service |
US10735394B2 (en) | 2016-08-05 | 2020-08-04 | Oracle International Corporation | Caching framework for a multi-tenant identity and data security management cloud service |
US10484382B2 (en) | 2016-08-31 | 2019-11-19 | Oracle International Corporation | Data management for a multi-tenant identity cloud service |
US10594684B2 (en) | 2016-09-14 | 2020-03-17 | Oracle International Corporation | Generating derived credentials for a multi-tenant identity cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10484243B2 (en) | 2016-09-16 | 2019-11-19 | Oracle International Corporation | Application management for a multi-tenant identity cloud service |
EP3513542B1 (en) | 2016-09-16 | 2021-05-19 | Oracle International Corporation | Tenant and service management for a multi-tenant identity and data security management cloud service |
US10445395B2 (en) | 2016-09-16 | 2019-10-15 | Oracle International Corporation | Cookie based state propagation for a multi-tenant identity cloud service |
US10791087B2 (en) | 2016-09-16 | 2020-09-29 | Oracle International Corporation | SCIM to LDAP mapping using subtype attributes |
US10567364B2 (en) | 2016-09-16 | 2020-02-18 | Oracle International Corporation | Preserving LDAP hierarchy in a SCIM directory using special marker groups |
US10341354B2 (en) | 2016-09-16 | 2019-07-02 | Oracle International Corporation | Distributed high availability agent architecture |
US10904074B2 (en) | 2016-09-17 | 2021-01-26 | Oracle International Corporation | Composite event handler for a multi-tenant identity cloud service |
US11197010B2 (en) * | 2016-10-07 | 2021-12-07 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple CPU threads |
US10356200B2 (en) | 2016-12-28 | 2019-07-16 | Google Llc | Optimizing user interface data caching for future actions |
US10481876B2 (en) * | 2017-01-11 | 2019-11-19 | Microsoft Technology Licensing, Llc | Methods and systems for application rendering |
CN108334517A (zh) * | 2017-01-20 | 2018-07-27 | 华为技术有限公司 | 一种网页渲染方法及相关设备 |
US10261836B2 (en) | 2017-03-21 | 2019-04-16 | Oracle International Corporation | Dynamic dispatching of workloads spanning heterogeneous services |
US10454915B2 (en) | 2017-05-18 | 2019-10-22 | Oracle International Corporation | User authentication using kerberos with identity cloud service |
CN109428919B (zh) * | 2017-08-28 | 2022-02-25 | 阿里巴巴集团控股有限公司 | 网页处理请求的处理方法和装置以及电子设备 |
US10348858B2 (en) | 2017-09-15 | 2019-07-09 | Oracle International Corporation | Dynamic message queues for a microservice based cloud service |
US11308132B2 (en) | 2017-09-27 | 2022-04-19 | Oracle International Corporation | Reference attributes for related stored objects in a multi-tenant cloud service |
US11271969B2 (en) | 2017-09-28 | 2022-03-08 | Oracle International Corporation | Rest-based declarative policy management |
US10834137B2 (en) | 2017-09-28 | 2020-11-10 | Oracle International Corporation | Rest-based declarative policy management |
US10705823B2 (en) | 2017-09-29 | 2020-07-07 | Oracle International Corporation | Application templates and upgrade framework for a multi-tenant identity cloud service |
CN107992327A (zh) * | 2017-12-07 | 2018-05-04 | 国云科技股份有限公司 | 一种Windows环境下编写的脚本适应于Linux的方法 |
CN108228805B (zh) * | 2017-12-29 | 2021-04-06 | 北京安云世纪科技有限公司 | 一种用于对显示数据进行处理的方法、设备及移动终端 |
US10715564B2 (en) | 2018-01-29 | 2020-07-14 | Oracle International Corporation | Dynamic client registration for an identity cloud service |
US10409573B1 (en) * | 2018-02-19 | 2019-09-10 | International Business Machines Corporation | Batch script decomposer |
US10931656B2 (en) | 2018-03-27 | 2021-02-23 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US10798165B2 (en) | 2018-04-02 | 2020-10-06 | Oracle International Corporation | Tenant data comparison for a multi-tenant identity cloud service |
US11258775B2 (en) | 2018-04-04 | 2022-02-22 | Oracle International Corporation | Local write for a multi-tenant identity cloud service |
US10929499B2 (en) | 2018-05-15 | 2021-02-23 | Eeosk, Inc. | System for loading software modules |
US11012444B2 (en) | 2018-06-25 | 2021-05-18 | Oracle International Corporation | Declarative third party identity provider integration for a multi-tenant identity cloud service |
US10764273B2 (en) | 2018-06-28 | 2020-09-01 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
CN110765455A (zh) * | 2018-09-04 | 2020-02-07 | 哈尔滨安天科技集团股份有限公司 | 基于属性域异常调用的恶意文档检测方法、装置及系统 |
US11693835B2 (en) | 2018-10-17 | 2023-07-04 | Oracle International Corporation | Dynamic database schema allocation on tenant onboarding for a multi-tenant identity cloud service |
US11321187B2 (en) | 2018-10-19 | 2022-05-03 | Oracle International Corporation | Assured lazy rollback for a multi-tenant identity cloud service |
KR20200067529A (ko) | 2018-12-04 | 2020-06-12 | 재단법인 에이펙 기후센터 | 외부 스크립트 실행 프로세스 최적화를 통한 기후모델링 장치 및 방법 |
CN111339455B (zh) * | 2018-12-18 | 2024-02-23 | 阿里巴巴集团控股有限公司 | 浏览器应用加载页面首屏的方法和装置 |
CN111385249B (zh) * | 2018-12-28 | 2023-07-18 | 中国电力科学研究院有限公司 | 一种脆弱性检测方法 |
US11651357B2 (en) | 2019-02-01 | 2023-05-16 | Oracle International Corporation | Multifactor authentication without a user footprint |
US11061929B2 (en) | 2019-02-08 | 2021-07-13 | Oracle International Corporation | Replication of resource type and schema metadata for a multi-tenant identity cloud service |
US11321343B2 (en) | 2019-02-19 | 2022-05-03 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
US11669321B2 (en) | 2019-02-20 | 2023-06-06 | Oracle International Corporation | Automated database upgrade for a multi-tenant identity cloud service |
US11423111B2 (en) | 2019-02-25 | 2022-08-23 | Oracle International Corporation | Client API for rest based endpoints for a multi-tenant identify cloud service |
US11792226B2 (en) | 2019-02-25 | 2023-10-17 | Oracle International Corporation | Automatic api document generation from scim metadata |
US11870770B2 (en) | 2019-09-13 | 2024-01-09 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration |
US11687378B2 (en) | 2019-09-13 | 2023-06-27 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability |
US11611548B2 (en) | 2019-11-22 | 2023-03-21 | Oracle International Corporation | Bulk multifactor authentication enrollment |
KR102266073B1 (ko) * | 2020-02-03 | 2021-06-17 | 주식회사 한글과컴퓨터 | 멀티 스레드를 기반으로 스프레드시트 문서를 구성하는 각 시트에 대한 효율적 로드를 제어하는 전자 장치 및 그 동작 방법 |
JP2023541413A (ja) * | 2020-09-13 | 2023-10-02 | オラクル・インターナショナル・コーポレイション | リッチクライアントアプリケーションランタイムフレームワークの革新的な遠隔測定 |
US11973780B2 (en) * | 2020-10-14 | 2024-04-30 | Palo Alto Networks, Inc. | Deobfuscating and decloaking web-based malware with abstract execution |
CN112328324B (zh) * | 2020-11-06 | 2022-04-19 | 湖南快乐阳光互动娱乐传媒有限公司 | 可配置数据源的DataFetcher实现系统和方法 |
CN112433778B (zh) * | 2020-11-09 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 一种移动设备页面显示方法、装置、电子设备及存储介质 |
CN112417345B (zh) * | 2021-01-25 | 2021-04-13 | 北京小米移动软件有限公司 | 渲染方法、装置、电子设备及存储介质 |
CN112800370B (zh) * | 2021-01-28 | 2024-04-30 | 金蝶蝶金云计算有限公司 | 业务单据的处理方法、装置、计算机设备和存储介质 |
CN113342400B (zh) * | 2021-06-29 | 2022-05-17 | 上海哔哩哔哩科技有限公司 | 离线包打包方法、装置及计算机设备 |
CN114416247A (zh) * | 2021-12-31 | 2022-04-29 | 北京五八信息技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
US20240078101A1 (en) * | 2022-08-31 | 2024-03-07 | Dagger, Inc. | Automated application deployment |
CN117076095B (zh) * | 2023-10-16 | 2024-02-09 | 华芯巨数(杭州)微电子有限公司 | 一种基于dag的任务调度方法、系统、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292936B1 (en) * | 1998-11-12 | 2001-09-18 | International Business Machines Corporation | Enabling multiple runtime processors in an interpreter-based embedded scripting system |
US20100180192A1 (en) * | 2009-01-09 | 2010-07-15 | Cerner Innovation, Inc. | Dynamically configuring a presentation layer associated with a webpage delivered to a client device |
US20120110433A1 (en) * | 2010-10-28 | 2012-05-03 | Microsoft Corporation | Parallel web page processing |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281203B2 (en) * | 1998-09-29 | 2007-10-09 | Netscape Communications Corporation | Selecting a DTD for transforming malformed layout expressions into wellformed ones |
WO2002057909A2 (en) * | 2001-01-16 | 2002-07-25 | Sun Microsystems, Inc. | Value speculation on an assist processor to facilitate prefetching for a primary processor |
US7234136B2 (en) * | 2001-11-02 | 2007-06-19 | Sun Microsystems, Inc. | Method and apparatus for selecting references for prefetching in an optimizing compiler |
US7487227B2 (en) * | 2004-06-03 | 2009-02-03 | Alcatel-Lucent Usa Inc. | Scripting engine having a sequencer table and a plurality of secondary tables for network communication software |
US7519962B2 (en) * | 2004-10-07 | 2009-04-14 | Thomson Financial Llc | Command script parsing using local and extended storage for command lookup |
CN101375284B (zh) * | 2004-10-25 | 2012-02-22 | 安全第一公司 | 安全数据分析方法和系统 |
US8225392B2 (en) * | 2005-07-15 | 2012-07-17 | Microsoft Corporation | Immunizing HTML browsers and extensions from known vulnerabilities |
US7814410B2 (en) * | 2005-09-12 | 2010-10-12 | Workman Nydegger | Initial server-side content rendering for client-script web pages |
US8020089B1 (en) * | 2006-10-23 | 2011-09-13 | Adobe Systems Incorporated | Rendering hypertext markup language content |
US20080172738A1 (en) * | 2007-01-11 | 2008-07-17 | Cary Lee Bates | Method for Detecting and Remediating Misleading Hyperlinks |
US8966053B2 (en) * | 2007-07-12 | 2015-02-24 | Viasat, Inc. | Methods and systems for performing a prefetch abort operation for network acceleration |
US8549099B2 (en) * | 2007-07-12 | 2013-10-01 | Viasat, Inc. | Methods and systems for javascript parsing |
US8285813B1 (en) * | 2007-12-05 | 2012-10-09 | Appcelerator, Inc. | System and method for emulating different user agents on a server |
CN101242279B (zh) * | 2008-03-07 | 2010-06-16 | 北京邮电大学 | 用于web系统的自动化渗透性测试系统和方法 |
US20100050089A1 (en) * | 2008-08-20 | 2010-02-25 | Company 100, Inc. | Web browser system of mobile communication terminal, using proxy server |
US20100175049A1 (en) * | 2009-01-07 | 2010-07-08 | Microsoft Corporation | Scope: a structured computations optimized for parallel execution script language |
WO2011005881A1 (en) * | 2009-07-07 | 2011-01-13 | Howard Robert S | System and method of automatically transforming serial streaming programs into parallel streaming programs |
US8683319B2 (en) * | 2009-10-06 | 2014-03-25 | Telefonaktiebolaget L M Ericsson (Publ) | Shared script files in multi-tab browser |
US9003380B2 (en) * | 2010-01-12 | 2015-04-07 | Qualcomm Incorporated | Execution of dynamic languages via metadata extraction |
US9058489B2 (en) * | 2010-01-25 | 2015-06-16 | Samsung Electronics Co., Ltd. | Marking documents with executable text for processing by computing systems |
US9075663B2 (en) * | 2010-05-12 | 2015-07-07 | Samsung Electronics Co., Ltd. | Cloud-based web workers and storages |
US10580051B2 (en) * | 2010-05-18 | 2020-03-03 | Google Llc | Background element associated with an application installed in a browser application |
US8375296B2 (en) * | 2010-06-30 | 2013-02-12 | Samsung Electronics Co., Ltd. | Reusing style sheet assets |
US8850307B2 (en) * | 2010-12-17 | 2014-09-30 | Qualcomm Innovation Center, Inc. | Method and apparatus for receiving display limited web page content |
US9104475B2 (en) * | 2011-04-07 | 2015-08-11 | Qualcomm Innovation Center, Inc. | Methods and apparatus for managing operations of a web browser by predicting time period of subsequent script execution activity |
US8413047B2 (en) * | 2011-05-12 | 2013-04-02 | Qualcomm Incorporated | Concurrent parsing and processing of HTML and JAVASCRIPT® |
IN2014CN02731A (zh) * | 2011-09-14 | 2015-07-03 | Nokia Corp | |
CN102306204B (zh) * | 2011-09-28 | 2013-03-13 | 武汉大学 | 基于文本结构权重的主题区域识别方法 |
US20130227388A1 (en) * | 2012-02-28 | 2013-08-29 | Microsoft Corporation | Persistent Storage of Profile Data for Script Compilation |
-
2012
- 2012-12-20 US US13/722,066 patent/US20140053056A1/en not_active Abandoned
-
2013
- 2013-04-18 US US13/865,590 patent/US20140053059A1/en not_active Abandoned
- 2013-06-17 CN CN201380043074.7A patent/CN104583949A/zh active Pending
- 2013-06-17 KR KR1020157006571A patent/KR101688339B1/ko active IP Right Grant
- 2013-06-17 IN IN95MUN2015 patent/IN2015MN00095A/en unknown
- 2013-06-17 JP JP2015527458A patent/JP5989248B2/ja not_active Expired - Fee Related
- 2013-06-17 WO PCT/US2013/046099 patent/WO2014028115A1/en active Application Filing
- 2013-06-17 EP EP13735490.8A patent/EP2885703B1/en not_active Not-in-force
- 2013-06-26 TW TW102122788A patent/TWI569204B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292936B1 (en) * | 1998-11-12 | 2001-09-18 | International Business Machines Corporation | Enabling multiple runtime processors in an interpreter-based embedded scripting system |
US20100180192A1 (en) * | 2009-01-09 | 2010-07-15 | Cerner Innovation, Inc. | Dynamically configuring a presentation layer associated with a webpage delivered to a client device |
US20120110433A1 (en) * | 2010-10-28 | 2012-05-03 | Microsoft Corporation | Parallel web page processing |
Also Published As
Publication number | Publication date |
---|---|
KR20150045471A (ko) | 2015-04-28 |
TW201411483A (zh) | 2014-03-16 |
EP2885703B1 (en) | 2016-04-13 |
US20140053059A1 (en) | 2014-02-20 |
JP5989248B2 (ja) | 2016-09-07 |
KR101688339B1 (ko) | 2016-12-20 |
US20140053056A1 (en) | 2014-02-20 |
CN104583949A (zh) | 2015-04-29 |
JP2015531925A (ja) | 2015-11-05 |
WO2014028115A1 (en) | 2014-02-20 |
IN2015MN00095A (zh) | 2015-10-16 |
EP2885703A1 (en) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI569204B (zh) | web瀏覽器中之指令碼之預處理 | |
US9898446B2 (en) | Processing a webpage by predicting the usage of document resources | |
EP2885705B1 (en) | Speculative resource prefetching via sandboxed execution | |
US8510237B2 (en) | Machine learning method to identify independent tasks for parallel layout in web browsers | |
Cascaval et al. | Zoomm: a parallel web browser engine for multicore mobile devices | |
US20160321218A1 (en) | System and method for transforming image information for a target system interface | |
US20170054790A1 (en) | System and Method for Object Compression and State Synchronization | |
US11023234B2 (en) | Method and system for restructuring of collections for synchronization | |
US11934810B2 (en) | Translating an edit from a child computer language to a parent computer language while maintaining a semantic meaning of the edit | |
Wenger | Design and implementation of a compiler for a fog and IoT programming language | |
Bhatt | RCP database and search tool | |
Han | Designer-in-the-Loop Recoding for Creating Parallel and Safe ESL Models | |
Outman | Static optimization of transparently distributed network applications | |
Pan | Parallel XML parsing | |
JP2004318314A (ja) | データベース検索装置、プログラムおよび記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |