Dynamic content assembly on edge-of-network servers in a content delivery network
First Claim
1. Content delivery network apparatus for assembling content fragments into a container, wherein the container comprises markup identifying one or more content fragments, comprising:
- a hardware processor;
computer memory that includes a first portion that is a host process queue, and a second portion that is a dynamic content assembly (DCA) queue;
the computer memory holding computer program instructions that when executed by the hardware processor perform the following method;
initializing, by a host process, a DCA execution thread;
receiving, by the host process, a request for the container, and placing the request in the DCA queue;
removing from the DCA queue, by the DCA execution thread, the request, and processing the request to generate a data object;
instantiating a software processor;
generating, by the software processor, a parse tree representation of the container, the parse tree representation including an edge side include (ESI) code directive associated with at least one content fragment in the container;
cloning the parse tree representation in a cache associated with the host process;
processing, by the software processor, and from top to bottom of the parse tree representation, each ESI code directive, wherein, if an ESI code directive in the parse tree representation is an ESI include, the DCA execution thread places a request associated with the ESI include in the host process queue for handling by the host process execution thread;
as ESI code directives are processed, having the software processor concatenate results into the data object;
after the parse tree representation is parsed from top to bottom, placing the data object on the host process queue;
retrieving, by a host process execution thread, the data object, and building a response to the request for the container;
serving the response; and
upon receipt by the host process of a new request, re-using the cloned parse tree representation.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention enables a content provider to dynamically assemble content at the edge of the Internet, preferably on content delivery network (CDN) edge servers. Preferably, the content provider leverages an “edge side include” (ESI) markup language that is used to define Web page fragments for dynamic assembly at the edge. Dynamic assembly improves site performance by catching the objects that comprise dynamically generated pages at the edge of the Internet, close to the end user. The content provider designs and develops the business logic to form and assemble the pages, for example, by using the ESI language within its development environment. Instead of being assembled by an application/web server in a centralized data center, the application/web server sends a page template and content fragments to a CDN edge server where the page is assembled. Each content fragment can have its own cacheability profile to manage the “freshness” of the content. Once a user requests a page (template), the edge server examines its cache for the included fragments and assembles the page on-the-fly.
187 Citations
17 Claims
-
1. Content delivery network apparatus for assembling content fragments into a container, wherein the container comprises markup identifying one or more content fragments, comprising:
-
a hardware processor; computer memory that includes a first portion that is a host process queue, and a second portion that is a dynamic content assembly (DCA) queue; the computer memory holding computer program instructions that when executed by the hardware processor perform the following method; initializing, by a host process, a DCA execution thread; receiving, by the host process, a request for the container, and placing the request in the DCA queue; removing from the DCA queue, by the DCA execution thread, the request, and processing the request to generate a data object; instantiating a software processor; generating, by the software processor, a parse tree representation of the container, the parse tree representation including an edge side include (ESI) code directive associated with at least one content fragment in the container; cloning the parse tree representation in a cache associated with the host process; processing, by the software processor, and from top to bottom of the parse tree representation, each ESI code directive, wherein, if an ESI code directive in the parse tree representation is an ESI include, the DCA execution thread places a request associated with the ESI include in the host process queue for handling by the host process execution thread; as ESI code directives are processed, having the software processor concatenate results into the data object; after the parse tree representation is parsed from top to bottom, placing the data object on the host process queue; retrieving, by a host process execution thread, the data object, and building a response to the request for the container; serving the response; and upon receipt by the host process of a new request, re-using the cloned parse tree representation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. Content delivery network apparatus for assembling content fragments into a container, wherein the container comprises markup identifying one or more content fragments, comprising:
-
a hardware processor; computer memory that includes a first portion that is a host process queue, and a second portion that is a dynamic content assembly (DCA) queue; the computer memory holding computer program instructions that when executed by the hardware processor perform the following method; initializing, by a host process, a DCA execution thread; receiving, by the host process, a request for the container, and placing the request in the DCA queue; removing from the DCA queue, by the DCA execution thread, the request, and processing the request to generate a data object; instantiating a parent software processor; generating, by the parent software processor, a parse tree representation of the container, the parse tree representation including an edge side include (ESI) code directive associated with at least one content fragment in the container; processing, by the parent software processor, and from top to bottom of the parse tree representation, each ESI code directive, wherein, if an ESI code directive in the parse tree representation is an ESI include, the DCA execution thread places a request associated with the ESI include in the host process queue for handling by the host process execution thread; as ESI code directives are processed, having the parent software processor concatenate results into the data object, wherein the request associated with the ESI include is processed by another software processor as a child processor to the parent software processor; after the parse tree representation is parsed from top to bottom, placing the data object on the host process queue; retrieving, by a host process execution thread, the data object, and building a response to the request for the container; and serving the response. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
Specification