IP Library › Granted Patent US 9,898,445
Granted Patent B2
US 9,898,445 · App. 13/722,098 · Granted Feb 20, 2018

Resource prefetching via sandboxed execution

Inventors: Mohammad H. Reshadi (Sunnyvale, CA); Michael Weber (Campbell, CA)
Assignee: QUALCOMM Incorporated
G06F17/2247G06F8/4442G06F17/30902
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,898,445
App. No.
13/722,098
Granted
Feb 20, 2018
Kind
B2
Abstract

The aspects include browser systems and methods of loading/rendering a webpage by preprocessing scripts within the web document (HTML page) in a sandboxed script engine to discover resources not explicitly requested in the web document so such resources can be pre-fetched and downloaded speculatively. The sandboxed execution of scripts and downloading of discovered resources may proceed in parallel with the performance of other browser operations (e.g., HTML parsing) and other resource requests. The sandboxed script engine may be isolated or separated from the other browser components. The sandboxed script engine may operate to speedup the process of identifying resources inconsistent with standard script execution processes.

Claims (73)

1. A method of pre-fetching resources, comprising:

scanning an HTML document to discover a script by an HTML document scanner executing in a processor of a computing device;

invoking a script execution engine and spawning a sandboxed script execution engine in response to the HTML document scanner discovering the script, wherein:

the script execution engine:

commences compiling and executing the discovered script on the computing device concurrent with execution of the HTML document scanner and the sandboxed script execution engine; and

the sandboxed script execution engine:

executes on the computing device concurrent with the execution of the HTML document scanner and the script execution engine;

selects operations in the discovered script that are relevant to discovering external resources; and

executes only the selected operations to discover resources that are not expressly referenced in the discovered script or in the HTML document;

pre-fetching the resources by the sandboxed script execution engine issuing a request to a pre-fetcher to download the discovered resources that are not expressly referenced in the discovered script or in the html document, wherein pre-fetching the resources includes the sandboxed script execution engine pre-fetching a resource in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation; and

discarding results generated via the sandboxed script execution engine executing the selected operations of the discovered script.

2. The method of claim 1 , wherein the sandboxed script execution engine executes at least one of the selected operations to discover a resource that is required to render the HTML document on an electronic display of the computing device.

3. The method of claim 1 , wherein the sandboxed script execution engine executes at least one of the selected operations in parallel with an execution of a browser operation.

4. The method of claim 1 , wherein the sandboxed script execution engine executes at least one of the selected operations in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation.

5. The method of claim 1 , wherein the sandboxed script execution engine executes only the selected operations that correspond to a pattern identified as being relevant to discovering the external resources.

6. The method of claim 1 , wherein the sandboxed script execution engine executes the selected operations based on heuristics.

7. The method of claim 1 , further comprising:

limiting a size of data structures generated from executing the selected operations.

8. A computing device, comprising:

means for scanning an HTML document to discover a script by an HTML document scanner executing in a processor of the computing device;

means for invoking a script execution engine and spawning a sandboxed script execution engine in response to the HTML document scanner discovering the script, wherein:

the script execution engine includes:

means for commencing compilation and execution of the discovered script on the computing device concurrent with execution of the HTML document scanner and the sandboxed script execution engine; and

the sandboxed script execution engine includes:

means for executing in the computing device concurrent with the execution of the HTML document scanner and the script execution engine;

means for selecting operations in the discovered script that are relevant to discovering external resources; and

means for executing only the selected operations to discover resources that are not expressly referenced in the discovered script or in the HTML document;

means for pre-fetching resources by the sandboxed script execution engine issuing a request to a pre-fetcher to download the discovered resources that are not expressly referenced in the discovered script or in the HTML document, wherein pre-fetching the resources includes the sandboxed script execution engine pre-fetching a resource in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation; and

means for discarding results generated via the sandboxed script execution engine executing the selected operations of the discovered script.

9. The computing device of claim 8 , wherein means for executing only the selected operations to discover the resources that are not expressly referenced in the script or in the HTML document comprises means for executing at least one of the selected operations to discover a resource that is required to render the HTML document on an electronic display of the computing device.

10. The computing device of claim 8 , wherein means for executing only the selected operations comprises means for executing at least one of the selected operations in parallel with an execution of a browser operation.

11. The computing device of claim 8 , wherein means for executing only the selected operations comprises means for executing at least one of the selected operations in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation.

12. The computing device of claim 8 , wherein means for executing only the selected operations comprises means for executing only the selected operations that correspond to a pattern identified as being relevant to discovering the external resources.

13. The computing device of claim 8 , wherein means for executing only the selected operations comprises means for executing the selected operations based on heuristics.

14. The computing device of claim 8 , further comprising:

means for limiting a size of data structures generated from executing the selected operations.

15. A computing device, comprising:

a processor configured with processor-executable instructions to perform operations comprising:

scanning an HTML document to discover a script by an HTML document scanner;

invoking a script execution engine and spawning a sandboxed script execution engine in response to the HTML document scanner discovering the script, wherein:

the script execution engine:

commences compiling and executing the discovered script on the computing device concurrent with execution of the HTML document scanner and the sandboxed script execution engine; and

the sandboxed script execution engine:

executes concurrent with the execution of the HTML document scanner and the script execution engine;

selects operations in the discovered script that are relevant to discovering external resources;

executes only the selected operations to discover resources that are not expressly referenced in the discovered script or in the HTML document;

pre-fetching resources by the sandboxed script execution engine issuing a request to a pre-fetcher to download the discovered resources that are not expressly referenced in the discovered script or in the HTML document, wherein pre-fetching the resources includes the sandboxed script execution engine pre-fetching a resource in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation; and

discarding results generated via the sandboxed script execution engine executing the selected operations of the discovered script.

16. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations such that the sandboxed script execution engine executes at least one of the selected operations to discover a resource that is required to render the HTML document on an electronic display of the computing device.

17. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations such that the sandboxed script execution engine executes at least one of the selected operations in parallel with an execution of a browser operation.

18. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations such that the sandboxed script execution engine executes at least one of the selected operations in parallel with executing other scripts and concurrent with an execution of a browser operation.

19. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations such that the sandboxed script execution engine executes only the selected operations that correspond to a pattern identified as being relevant to discovering the external resources.

20. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations such that the sandboxed script execution engine executes the selected operations based on heuristics.

21. The computing device of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:

limiting a size of data structures generated from executing the selected operations.

22. A non-transitory computer readable storage medium having stored thereon processor-executable software instructions configured to cause a processor in a computing device to perform operations comprising:

scanning an HTML document to discover a script by an HTML document scanner;

invoking a script execution engine and spawning a sandboxed script execution engine in response to the HTML document scanner discovering the script, wherein:

the script execution engine:

commences compiling and executing the discovered script on the computing device concurrent with execution of the HTML document scanner and the sandboxed script execution engine; and

the sandboxed script execution engine:

executes concurrent with the execution of the HTML document scanner and the script execution engine;

selects operations in the discovered script that are relevant to discovering external resources;

executes only the selected operations to discover resources that are not expressly referenced in the discovered script or in the HTML document;

pre-fetching resources by the sandboxed script execution engine issuing a request to a pre-fetcher to download the discovered resources that are not expressly referenced in the discovered script or in the HTML document, wherein pre-fetching the resources includes the sandboxed script execution engine pre-fetching a resource in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation; and

discarding results generated via the sandboxed script execution engine executing the selected operations of the discovered script.

23. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that the sandboxed script execution engine executes at least one of the selected operations to discover a resource that is required to render the HTML document on an electronic display.

24. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that the sandboxed script execution engine executes at least one of the selected operations in parallel with an execution of a browser operation.

25. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that the sandboxed script execution engine executes at least one of the selected operations in parallel with the script execution engine executing a different script and concurrent with an execution of a browser operation.

26. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that the sandboxed script execution engine executes only the selected operations that correspond to a pattern identified as being relevant to discovering the external resources.

27. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations such that the sandboxed script execution engine executes the selected operations based on heuristics.

28. The non-transitory computer readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause a processor to perform operations further comprising:

limiting a size of data structures generated from executing the selected operations.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING PROVISIONAL INFORMAITON, 61/684,601 FILED AUGUST 17, 2012, FROM THE ORIGINAL ASSIGNMENT PREVIOUSLY RECORDED ON REEL 029570 FRAME 0238. ASSIGNOR(S) HEREBY CONFIRMS THE MISSING PROVISIONAL INFORMAITON, 61/684,601 FILED AUGUST 17, 2012, HAS BEEN ADDED TO THE CORRECTIVE ASSIGNMENT. Recorded May 12, 2015
From: RESHADI, MOHAMMAD H; WEBER, MICHAEL
To: QUALCOMM INCORPORATED
Reel/Frame 035647/0938 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2013
From: RESHADI, MOHAMMAD H.; WEBER, MICHAEL
To: QUALCOMM INCORPORATED
Reel/Frame 029570/0238 →
Continuity (3)
Provisional Application 61684601 · Aug 17, 2012
Provisional Application 61683996 · Aug 16, 2012
Related Publication 20140053057A1 · Feb 20, 2014