IP Library Granted Patent US 7,231,644
Granted Patent B2
US 7,231,644 · App. 10/203,043 · Granted Jun 12, 2007

Optimized delivery of web application code

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 7,231,644
App. No.
10/203,043
Granted
Jun 12, 2007
Kind
B2
Abstract

Application code for deployment to a client over a data link is optimized to minimize download time by supplying only the application code with a particular object that is required by the object. In a web application that includes multiple pages, the HTML and JAVASCRIPT are scanned to identify code resources called by a particular web page. When all called resources are identified, they are extracted and concatenated into a single resource file. When the page is downloaded to the client, the import file is included with the page. The import file may be cached so that it need only be downloaded once, rather than being downloaded every time the page is requested. The invention is suitable for use with other interpreted scripting languages.

Claims (131)

1. A procedure for optimizing application code for deployment to a client over a data link, wherein only the code needed by a first object within said application code is supplied to the client with said first object, wherein said application code comprises a web application, said web application further comprising at least one import file of code, said procedure comprising the steps of:

analyzing said first object;

without requiring any input from any user, automatically determining all external code needed by said first object in order to implement its functionality, wherein automatically determining all external code needed by said first object in order to implement its functionality further comprises identifying any embedded code blocks and said at least one import file, and identifying all resources needed by said first object in order to implement its functionality contained therein;

extracting all the determined external code needed by the first object in order to implement its functionality from said any embedded code blocks and said at least one import file, wherein said any embedded code blocks and said at least one import file from which the needed code is extracted further contains unneeded code, which is not extracted;

concatenating all the extracted external code needed by the first object in order to implement its functionality into a single file;

wherein said single file contains only the code required by said first object in order to implement its functionality; and

transmitting said single file to the client.

2. The procedure of claim 1 , wherein said first object comprises a web page, said web application including at least one web page that includes at least one functionality, said web page comprising a file of HTML (hypertext markup language) code, said web page including at least one embedded code block written in a scripting language.

3. The procedure of claim 2 , wherein said scripting language is comprises any of JAVASCRIPT and VBSCRIPT.

4. The procedure, of claim 2 , wherein said external code is located in at least one of:

said at least one embedded code block; and

said at least one import file.

5. The procedure of claim 3 , wherein said steps of analyzing said first object, and without requiring any input from any user, automatically determining all external code needed by said first object in order to implement its functionality further comprises the steps of:

scanning said HTML code;

scanning said at least one embedded code block;

scanning said at least one import file; and

identifying entry points contained therein.

6. The procedure of claim 5 , wherein said entry points comprise any of:

HTML tags that incorporate JAVASCRIPT statements;

actions associated with web page elements; and

DOM (document object model) events.

7. The procedure of claim 6 , wherein said actions associated with web page elements include HTML form actions.

8. The procedure of claim 5 , wherein automatically determining all external code needed by said first object in order to implement its functionality further comprises the steps of:

creating a resource information object for each needed resource; and

creating at least one list of said information objects.

9. The procedure of claim 8 , wherein said resources comprises any of:

functions;

a virtual function;

methods;

procedures;

sub-routines; and

any code block that performs a specific task.

10. The procedure of claim 9 , wherein said virtual function comprises:

a placeholder in said HTML code, wherein said virtual function comprises at least one of:

instructions and resources contained in said embedded code blocks;

wherein a web page element invokes a plurality of said functions.

11. The procedure of claim 8 , wherein said resource information object comprises:

resource name;

methods called by said resource;

optionally, implementation of said resource;

optionally, source file;

an ‘is-used’ field; and

an ‘is-real’ field.

12. The procedure of claim 11 , wherein said ‘is-used’ and said ‘is-real’ fields are Boolean fields, said ‘is-used’ field being set to denote a resource required by said web page and said ‘is-real field’ left unset to denote a virtual function.

13. The procedure of claim 12 , wherein said step of creating at least one list of said information objects comprises the step of:

creating an array of said resource information objects.

14. The procedure of claim 13 , wherein said step of creating at least one list of said information objects further comprises the step of creating a hash map of said information objects, wherein keys in said hash map comprise resource names and corresponding values comprise information objects for the named resources.

15. The procedure of claim 13 , wherein said step of identifying all resources needed by said first object in order to implement its functionality comprises the steps of:

for each entry point, following a call path to identify required resources;

for each resource encountered on said call path, setting said ‘is-used’ field.

16. The procedure of claim 15 , wherein said call path is followed until any of:

a resource is encountered that doesn't call any other resources;

a resource is encountered that calls a system function;

a resource is encountered that already has the ‘is-used’ field set.

17. The procedure of claim 16 , wherein said step of concatenating all extracted external code needed by the first object in order to implement its functionality into a single file comprises the steps of:

writing each resource for which the ‘is-used’ field is set to a new import file, wherein said resources are written to said new import file in the order that they occur in said application code; and

updating said application code to refer to said new import file.

18. The procedure of claim 1 , wherein analyzing said first object further comprises using an analysis tool incorporating one from a group consisting of:

IO support; and

support for collections, arrays, and hash maps.

19. The procedure of claim 18 , wherein said analysis tool comprises one of:

a PERL script; and

a JAVASCRIPT engine.

20. The procedure of claim 1 , wherein said single file is held in said client's cache after downloading, so that it need be downloaded only once.

21. The procedure of claim 1 , wherein said optimization is performed prior to deployment of said web application.

22. At least one computer readable storage medium containing a computer program product for optimizing application code for deployment to a client over a data link, wherein only the code needed by a first object within said application code is supplied to the client with said first object, wherein said application code comprises a web application, said web application further comprising at least one import file of code, said computer program product comprising:

program code for analyzing said first object;

program code for, without requiring any input from any user, automatically determining all external code needed by said first object in order to implement its functionality, wherein automatically determining all external code needed by said first object in order to implement its functionality further comprises identifying any embedded code blocks and said at least one import file, and identifying all resources needed by said first object in order to implement its functionality contained therein;

program code for extracting all the determined external code needed by the first object in order to implement its functionality from said any embedded code blocks and said at least one import file, wherein said any embedded code blocks and said at least one import file from which the needed code is extracted further contains unneeded code, which is not extracted;

program code for concatenating all the extracted external code needed by the first object in order to implement its functionality into a single file;

wherein said single file contains only the code required by said first object in order to implement its functionality; and

program code for transmitting said single file to the client.

23. The computer program product of claim 22 , wherein said first object comprises a web page, said web application including at least one web page that includes at least one functionality, said web page comprising a file of HTML (hypertext markup language) code, said web page including at least one embedded code block written in a scripting language.

24. The computer program product of claim 23 , wherein said scripting language comprises any of JAVASCRIPT and VBSCRIPT.

25. The computer program product of claim 24 , wherein said external code is located in at least one of:

said at least one embedded code block; and

said at least one import file.

26. The computer program product of claim 24 , wherein said program code for analyzing said first object, and without requiring any input from any user, automatically determining all external code needed by said first object in order to implement its functionality further comprises program code for:

scanning said HTML code;

scanning said at least one embedded code block;

scanning said at least one import file; and

identifying entry points contained therein.

27. The computer program product of claim 25 , wherein said entry points comprise any of:

HTML tags that incorporate JAVASCRIPT statements;

actions associated with web page elements; and

DOM (document object model) events.

28. The computer program product of claim 26 , wherein said actions associated with web page elements include HTML form actions.

29. The computer program product of claim 25 , wherein said program code for automatically determining all external code needed by said first object in order to implement its functionality further comprises program code for:

creating a resource information object for each needed resource; and

creating at least one list of said information objects.

30. The computer program product of claim 29 , wherein said resources comprises any of:

functions;

a virtual function;

methods;

procedures;

sub-routines; and

any code block that performs a specific task.

31. The computer program product of claim 30 , wherein said virtual function comprises:

a placeholder in said HTML code, wherein said virtual function comprises at least one of: instructions and resources contained in said embedded code blocks,

wherein a web page element invokes a plurality of said functions.

32. The computer program product of claim 29 , wherein said resource information object comprises:

resource name;

methods called by said resource;

optionally, implementation of said resource;

optionally, source file;

an ‘is-used’ field; and

an ‘is-real’ field.

33. The computer program product of claim 32 , wherein said ‘is-used’ and said ‘is-real’ fields are Boolean fields, said ‘is-used’ field being set to denote a resource required by said web page, and said ‘is-real field’ left unset to denote a virtual function.

34. The computer program product of claim 33 , wherein said program code for creating at least one list of said information objects comprises program code for:

creating an array of said resource information objects.

35. The computer program product of claim 34 , wherein said program code for creating at least one list of said information objects further comprises program code for creating a hash map of said information objects, wherein keys in said hash map comprise resource names and corresponding values comprise information objects for the named resources.

36. The computer program product of claim 34 , wherein said program code for identifying all resources needed by said first object in order to implement its functionality further comprises program code for:

for each entry point, following a call path to identify required resources;

for each resource encountered on said call path, setting said ‘is-used’ field.

37. The computer program product of claim 36 , wherein said call path is followed until any of:

a resource is encountered that doesn't call any other resources;

a resource is encountered that calls a system function;

a resource is encountered that already has the ‘is-used’ field set.

38. The computer program product of claim 37 , wherein said program code for concatenating all extracted external code needed by the first object in order to implement its functionality into a single file comprises program code for:

writing each resource for which the ‘is-used’ field is set to a new import file, wherein said resources are written to said new import file in the order that they occur in said application code; and

updating said application code to refer to said new import file.

39. The computer program product of claim 22 , wherein said program code for analyzing said first object further comprises program code for using an analysis tool incorporating one from a group consisting of:

IO support; and

support for collections, arrays, and hash maps.

40. The computer program product of claim 39 , wherein said analysis tool comprises one of:

a PERL script; and

a JAVASCRIPT engine.

41. The computer program product of claim 22 , further comprising program code for holding said single file in said client's cache after downloading, so that it need be downloaded only once.

42. The computer program product of claim 22 , wherein said at least one computer readable medium comprises at least one of:

fixed storage medium; and

a removable storage medium.

Assignments (7)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058961/0436 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 3, 2012
From: AOL INC.
To: FACEBOOK, INC.
Reel/Frame 028487/0304 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 16, 2010
From: BANK OF AMERICA, N A
To: AOL INC; AOL ADVERTISING INC; GOING INC; LIGHTNINGCAST LLC; MAPQUEST, INC; NETSCAPE COMMUNICATIONS CORPORATION; QUIGO TECHNOLOGIES LLC; SPHERE SOURCE, INC; TACODA LLC; TRUVEO, INC; YEDDA, INC
Reel/Frame 025323/0416 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2009
From: AOL LLC
To: AOL INC.
Reel/Frame 023720/0309 →
SECURITY AGREEMENT Recorded Dec 14, 2009
From: AOL INC.; AOL ADVERTISING INC.; BEBO, INC.; ICQ LLC; GOING, INC.; LIGHTNINGCAST LLC; MAPQUEST, INC.; NETSCAPE COMMUNICATIONS CORPORATION; QUIGO TECHNOLOGIES LLC; SPHERE SOURCE, INC.; TACODA LLC; TRUVEO, INC.; YEDDA, INC.
To: BANK OF AMERICAN, N.A. AS COLLATERAL AGENT
Reel/Frame 023649/0061 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2007
From: AMERICA ONLINE, INC.
To: AOL LLC, A DELAWARE LIMITED LIABILITY COMPANY
Reel/Frame 019240/0503 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2002
From: KIEFFER, ROBERT
To: AMERICA ONLINE, INC.
Reel/Frame 013234/0813 →