Automated code splitting and pre-fetching for improving responsiveness of browser-based applications
First Claim
1. A method for automatically rewriting a web application to improve perceived application performance, comprising steps for:
- receiving a web application that is designed to be executed within a browser-type application on a client computing device (i.e., the client);
decomposing structural code units of the web application into a set of stubs and a set of corresponding bodies;
determining a clustering of structural code units within the web application, said clustering being based, in part, on an identification of first execution times for each structural code unit, each first execution time representing a particular point in time corresponding to a first-access time that is observed at runtime for each particular structural code unit;
constructing a new application by rewriting the web application based on the clustering, wherein stubs are used to replace corresponding structural code units in the application to reduce a total size of code that that must be transferred to the client;
wherein each stub retrieves the corresponding body to the client when the stub is executed within the browser-type application on the client; and
wherein the retrieved corresponding body is then used to enable client-side execution of the corresponding body.
2 Assignments
0 Petitions
Accused Products
Abstract
A “code splitting tool” provides various techniques for automatically analyzing and rewriting existing browser-based applications to introduce dynamic code loading into those applications thereby improving perceived application responsiveness. Structural elements of application code (including functions, classes, etc.) are broken into small “stubs” with corresponding bodies. Rewritten applications then initially transfer only the portion of the code (including some combination of stubs and bodies) to the client as necessary for initial application execution. Additional stubs and/or bodies are then transferred either on-demand at runtime or in the background. Automated code rewriting proceeds without requiring any application-specific knowledge or changes to existing code prior to code rewriting. Further, the code splitting tool can tailor code rewriting to specific computing devices (computers, PDA'"'"'s, cell phones, etc.), specific network conditions, and/or specific users, through an automated training process that creates clusters that control code downloads to optimize perceived application responsiveness.
-
Citations
20 Claims
-
1. A method for automatically rewriting a web application to improve perceived application performance, comprising steps for:
-
receiving a web application that is designed to be executed within a browser-type application on a client computing device (i.e., the client); decomposing structural code units of the web application into a set of stubs and a set of corresponding bodies; determining a clustering of structural code units within the web application, said clustering being based, in part, on an identification of first execution times for each structural code unit, each first execution time representing a particular point in time corresponding to a first-access time that is observed at runtime for each particular structural code unit; constructing a new application by rewriting the web application based on the clustering, wherein stubs are used to replace corresponding structural code units in the application to reduce a total size of code that that must be transferred to the client; wherein each stub retrieves the corresponding body to the client when the stub is executed within the browser-type application on the client; and wherein the retrieved corresponding body is then used to enable client-side execution of the corresponding body. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system for automatically decomposing and rewriting a web application for execution within a browser-type application, comprising:
-
a device for receiving a web application; a device for learning a unique access profile for each of a plurality of unique groups of one or more clients, each access profile including an identification of first execution times for each structural code unit of the web application within the browser-type application of each client in each unique group; each first execution time representing a particular point in time corresponding to a first-access time that is observed at runtime for each particular structural code unit; a device for decomposing the web application to generate a set of stubs and a set of corresponding bodies for structural code units, wherein each stub is designed to call its corresponding body for retrieval by the client when the stub is executed by the client, and wherein the retrieved corresponding body is then used to enable client-side execution of the corresponding body; a device for generating a corresponding clustering of stubs from each unique access profile; and a device for constructing a separate new application for each unique access profile by rewriting the web application based on the corresponding clustering of stubs associated with each access profile to reduce a total size of code that that must be transferred to the client prior to initial execution of the new application. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computer-implemented process, comprising:
-
applying a computer to perform process actions for; receiving a web application, said web application designed to be delivered from a server to a client for execution within a browser application running on the client when the client directs the browser application to a website hosted by the server, said website including the web application; performing an automated training phase to construct a unique access profile for each of a plurality of unique groups of one or more clients, each access profile including an identification of first execution times for each structural code unit of the web application within the browser-type application of one or more of the clients in each unique group; each first execution time representing a particular point in time corresponding to a first-access time that is observed at runtime for each particular structural code unit; generating a set of stubs and a set of corresponding bodies for each structural code unit comprising the web application; processing each unique access profile to identify clustering parameters for generating a corresponding clustering of stubs from each unique access profile; constructing a separate new application for each unique access profile by rewriting the web application based on the corresponding clustering of stubs associated with each unique access profile; and wherein each stub is designed to retrieve its corresponding body from the server when the stub is executed by the client, and wherein the retrieved corresponding body is then used to enable client-side execution of the retrieved corresponding body. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification