Hierarchical caching techniques for efficient dynamic page generation
First Claim
1. A method for use in an electronic publishing system for generating pages on demand in response to a page request, the method comprising the steps of:
- defining a plurality of elements, each of the elements indicative of at least a portion of a page, the elements further comprising layout, logic, root, and template elements;
receiving a page request to produce a page, including a page name indicative of at least one element in an element catalog;
locating one or more of the elements associated with the page name in the element catalog, the elements for defining instructions for how to render the page; and
determining whether the rendered page or elements of the page are to be cache primitives depending upon the value of at least one context specific variable associated with the page request, the primitives arranged in a hierarchy and corresponding to at least one element in the element catalog.
7 Assignments
0 Petitions
Accused Products
Abstract
A system for implementing a distributed electronic publishing environment with dynamic content. With this approach, the design of the page and content of the page remain separate, and yet automatic page generation may make use of caching techniques which are appropriate for the specific level of expected page content dynamics. The purpose of the page thus drives its caching implementation. If the page is relatively static, then the entire page itself is delivered from a static cache. If, however, only certain components of the page are expected to be dynamic, then only the portions of the page which can be rendered in advance are cached. The dynamic portions of the page are represented as executable versions of elements that specify instructions for how the page is to be rendered. Furthermore, result sets are cached when the dynamic portion of the page depends upon the contents of an external database. The architecture may also be implemented in an application server environment which supports execution on a server cluster.
140 Citations
34 Claims
-
1. A method for use in an electronic publishing system for generating pages on demand in response to a page request, the method comprising the steps of:
-
defining a plurality of elements, each of the elements indicative of at least a portion of a page, the elements further comprising layout, logic, root, and template elements;
receiving a page request to produce a page, including a page name indicative of at least one element in an element catalog;
locating one or more of the elements associated with the page name in the element catalog, the elements for defining instructions for how to render the page; and
determining whether the rendered page or elements of the page are to be cache primitives depending upon the value of at least one context specific variable associated with the page request, the primitives arranged in a hierarchy and corresponding to at least one element in the element catalog. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
caching the multiple rendered versions of the page; and
in response to receipt of a request for the rendered page, serving a selected one of the cached versions of the rendered page based upon the value of at least one context specific variable.
-
-
4. A method as in claim 1 additionally comprising the steps of:
-
validating at least one element to produce an execution tree representation of the element; and
caching the execution tree representation of the element.
-
-
5. A method as in claim 1 wherein the page is defined as one or more templates, and each template includes one or more elements.
-
6. A method as in claim 1 wherein the template specifies formatting for the page separately from specifying how to locate content for the page.
-
7. A method as in claim 1 additionally comprising the step of:
in response to receipt of a request for the rendered page, reading at least one cached execution tree representation of a page element from the cache.
-
8. A method as in claim 7 additionally comprising the step of:
applying at least one context specific variable to the execution tree representation of an element to render the page.
-
9. A method as in claim 1 wherein the electronic publishing system is implemented in a server cluster environment in which page requests for a particular page are not necessarily routed to the same server each time, additionally comprising the step of:
-
storing synchronous set information for each cache primitive;
storing synchronous set information among servers in a cluster; and
in each server, from the synchronous set information, determining whether a local cache copy is stale.
-
-
10. A method as in claim 9 wherein the synchronous set information identifies a synchronous set master.
-
11. A method as in claim 9 wherein the synchronous set information includes time stamp information for the synchronous set master.
-
12. A method as in claim 1 wherein at least one element references content for the page contained in an external database, such content is retrieved as a database result set, and the step of determining whether to cache additionally comprises the step of determining whether to cache the result set depending upon the value of at least one context specific variable.
-
13. A method for generating pages in a distributed electronic publishing system in which instructions for locating content information for the page is stored separately from formatting information specifying how to format the page, and wherein the content for a given page is expected to be different for different instances of a request issued for the page, the method comprising the steps of:
-
defining a plurality of elements, each of the elements indicative of at least a portion of a page, the elements further comprising layout, logic, root, and template elements;
preprocessing a page definition to the extent possible without having page request instance variables available to generate an execution tree representation of the page, the execution tree representation indicative of at least one of the elements of the page;
caching the execution tree representation of the page, the caching further comprising page, element, and result level caching; and
upon receipt of a request to produce the page, reading the cached execution tree representation of the page and applying the page request instance variables to generate a completed page.
-
-
14. A method for generating and storing web pages and portions of web pages by a set of catalogs for mapping requested page names to the contents of the page and concurrently gathering primitives about the requested page comprising:
-
defining a site catalog indicative of a plurality of web pages, the site catalog having page names corresponding to at least one of the plurality of web pages;
defining a plurality of elements in an element catalog, the elements further comprising classes including layout, logic, root, and template elements;
defining a subset of the plurality of elements as the root elements, the root elements indicative of a plurality of other element comprising at least one of the plurality of web pages;
determining a request to generate a web page by receiving a requested page name from a web server;
mapping the requested page name into the site catalog to determine the root element indicative of the requested web page;
determining, from the root element, the corresponding elements in the element catalog;
retrieving, from the element catalog, the elements corresponding to the requested web page;
processing each of the elements according to instructions contained in each of the elements;
computing, from the processed elements, an execution tree representation of the completed web page; and
caching at least a portion of the completed web page, the caching further comprising page and element level caching. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A system for generating and storing web pages and portions of web pages by a set of catalogs for mapping requested page names to the contents of the page and concurrently gathering primitives about the requested page comprising:
-
a site catalog indicative of a plurality of web pages, the site catalog having page names corresponding to at least one of the plurality of web pages;
an element catalog having a plurality of elements, the elements further comprising classes including layout, logic, root, and template elements, the root elements indicative of a plurality of other elements comprising at least one of the plurality of web pages;
a web server operable to receive a requested page name from a user;
a content server operable to determine a request to generate a page by receiving the requested page name from the web server, the content server further operable to map the requested page name into the site catalog to determine the root element indicative of the requested web page;
a template, defined by the root element, indicative of the elements in the element catalog corresponding to the completed web page;
an execution tree representation of the completed web page, the content server operable to compute the execution tree representation by processing each of the elements according to instructions contained in each of the elements; and
a hierarchical cache operable to cache at least a portion of the completed web page, the caching further comprising page and element level caching. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A computer program product including computer program code for generating and storing web pages and portions of web pages by a set of catalogs for mapping requested page names to the contents of the page and concurrently gathering primitives about the requested page comprising:
-
computer program code for defining a site catalog indicative of a plurality of web pages, the site catalog having page names corresponding to at least one of the plurality of web pages;
computer program code for defining a plurality of elements in an element catalog, the elements further comprising classes including layout, logic, root, and template elements;
computer program code for defining a subset of the plurality of elements as the root elements, the root elements indicative of a plurality of other element comprising at least one of the plurality of web pages;
computer program code for determining a request to generate a web page by receiving a requested page name from a web server;
computer program code for mapping the requested page name into the site catalog to determine the root element indicative of the requested web page;
computer program code for determining, from the root element, the corresponding elements in the element catalog;
computer program code for retrieving, from the element catalog, the elements corresponding to the requested web page;
computer program code for processing each of the elements according to instructions contained in each of the elements;
computer program code for computing, from the processed elements, an execution tree representation of the completed web page; and
computer program code for caching at least a portion of the completed web page, the caching further comprising page and element level caching.
-
Specification