IP Library Granted Patent US 7,398,463
Granted Patent B2
US 7,398,463 · App. 10/203,037 · Granted Jul 8, 2008

High performance freeze-dried dynamic web page generation

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,398,463
App. No.
10/203,037
Granted
Jul 8, 2008
Kind
B2
Abstract

Dynamic web page generation is optimized by reducing the processing overhead required to parse the web page HTML code for tokens and insert dynamic content. Using the invention, an HTML file for a dynamic web page need be read and parsed only once throughout the life of the server. A software object parses the HTML, decomposes the page into constituent pieces and saves them to data structures as byte streams, which are cached, along with the software object, rendering multiple disk accesses unnecessary when the page is reconstituted. For subsequent requests, the dynamic page is created from the cached version, which is shareable across users and across requests. The optimization reduces server resource usage for dynamic page generation to near zero. The invention is also applicable to other documents combining static and dynamic content that require composition tools for editing.

Claims (67)

1. A process for optimizing generation of a computer readable document incorporating static and dynamic content, comprising the steps of:

creating and caching at a server an instance of a first software object, said first software object including:

a template for said document, said template including placeholders for dynamically-discovered content;

a plurality of data structures; and

computer-readable instructions for processing said template by said first software object;

decomposing said template into separate page components by said first software object according to said instructions;

saving said page components and said dynamically-discovered content to said data structures by said first software object according to said instructions;

receiving a request for said document from a client;

recomposing said document by said first software object; and

outputting said recomposed document to said client;

wherein a separate instance of said first software object is created and cached for each document.

2. A process according to claim 1 , wherein the step of creating and caching an instance of said first software object comprises the steps of:

retrieving said template by a second software object, said template comprising an HTML file;

creating an instance of said first software object for said file, if one does not already exist, said instance including said HTML file as a string; and

storing said instance to a global hashmap, said global hashmap held in said cache, wherein said first software object comprises a content composer.

3. A process as in claim 2 , wherein said step of decomposing said template comprises the steps of:

parsing said template string by said content composer; and

locating placeholders in said template for said dynamic content.

4. The process of claim 2 , wherein said placeholders comprise tokens, and wherein said document components comprise:

blocks of immutable content, having no tokens therein;

token replacement objects, said token replacement objects comprising blocks of static text preceding and following a token; and

raw token names.

5. The process of claim 4 , wherein said document components further comprise replacement values and replacement lines for said tokens, wherein said replacement values and replacement lines comprise said dynamic content.

6. The process of claim 5 , wherein said step of saving said components and said dynamically discovered content comprises the steps of:

converting said components into byte streams; and saving said byte streams to said data structures.

7. The process of claim 6 , wherein said data structures comprise:

a first array of immutable content containing: said blocks of immutable content and integer objects pointing to indices of one or more objects in a second array;

said second array, containing said token replacement objects and said raw token names, wherein blocks of immutable-content having tokens therein are built from said token replacement objects and said raw token names, and wherein raw token names further include pointers to corresponding keys in a third data structure; and

a hash map, said hash map comprising said third data structure, wherein keys of said hash map comprise said raw token names and wherein values comprise replacement values and replacement lines for said tokens.

8. The process of claim 7 , wherein said step of recomposing said document comprises:

walking said data structures and writing said data to a stream as it walks through the data structures, so that a document is created wherein said tokens are replaced with either of said replacement values or said replacement lines.

9. The process of claim 2 , wherein said cache and said template are located on a server and said request is received from a client in communication with said server.

10. The process of claim 9 , wherein said dynamically discovered content comprises content received from said client.

11. A computer program product for optimizing generation of a computer readable document incorporating static and dynamic content, said computer program product comprising a computer usable storage medium having computer readable computer code means embodied in the medium, the computer code means comprising computer readable program code means for:

creating and caching at a server an instance of a first software object, said first software object including:

a template for said document, said template including placeholders for dynamically-discovered content;

a plurality of data structures; and

computer-readable instructions for processing said template by said first software object;

decomposing said template into separate page by said first software object components according to said instructions;

saving said page components and said dynamically-discovered content to said data structures by said first software object according to said instructions;

receiving a request for said document from a client;

recomposing said document by said first software object; and

outputting said recomposed document to said client;

wherein a separate instance of said first software object is created and cached for each document.

12. A computer program product according to claim 11 , wherein the computer readable code for creating and caching an instance of said first software object comprises computer readable code for:

retrieving said template by a second software object, said template comprising an HTML file;

creating an instance of said first software object for said file, if one does not already exist, said instance including said HTML file as a string; and

storing said instance to a global hashmap, said global hashmap held in said cache, wherein said first software object comprises a content composer.

13. A computer program product as in claim 12 , wherein said computer readable code for decomposing said template comprises the computer readable code for:

parsing said template string by said content composer; and

locating placeholders in said template for said dynamic content.

14. A computer program product as in claim 12 , wherein said placeholders comprise tokens, and wherein said document components comprise:

blocks of immutable content, having no tokens therein;

token replacement objects, said token replacement objects comprising blocks of static text preceding and following a token; and

raw token names.

15. A computer program product as in claim 14 , wherein said document components further comprise replacement values and replacement lines for said tokens, wherein said replacement values and replacement lines comprise said dynamic content.

16. A computer program product as in claim 15 , wherein said computer readable code for saving said components and said dynamically discovered content comprises the computer readable code for:

converting said components into byte streams; and

saving said byte streams to said data structures.

17. A computer program product as in claim 12 , wherein said cache and said template are located on a server and said request is received from a client in communication with said server.

18. A computer program product as in claim 17 , wherein said dynamically discovered content comprises content received from said client.

19. A computer program product as in claim 16 , wherein said data structures comprise:

a first array of immutable content containing: said blocks of immutable content and integer objects pointing to indices of one or more objects in a second array;

said second array, containing said token replacement objects and said raw token names, wherein blocks of immutable content having tokens therein are built from said token replacement objects and said raw token names, and wherein raw token names further include pointers to corresponding keys in a third data structure; and

a hash map, said hash map comprising said third data structure, wherein keys of said hash map comprise said raw token names and wherein values comprise replacement values and replacement lines for said tokens.

20. A computer program product as in claim 19 , wherein said computer readable code for recomposing said document comprises computer readable code for:

walking said data structures and writing said data to a stream as it walks through the data structures, so that a document is created wherein said tokens are replaced with either of said replacement values or said replacement lines.

Assignments (8)
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED ON REEL 019711 FRAME 0316. ASSIGNOR(S) HEREBY CONFIRMS THE NATURE OF CONVEYANCE IS CHANGE OF NAME. Recorded Mar 25, 2009
From: AMERICA ONLINE, INC.
To: AOL LLC, A DELAWARE LIMITED LIABILITY COMPANY
Reel/Frame 022451/0186 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2007
From: AMERICA ONLINE, INC.
To: AOL LLC, A DELAWARE LIMITED LIABILITY COMPANY
Reel/Frame 019711/0316 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2002
From: BERNSTEIN, KEITH; KIEFFER, ROBERT
To: AMERICA ONLINE, INC.
Reel/Frame 013325/0359 →