DISPATCHING REQUEST FRAGMENTS FROM A RESPONSE AGGREGATING SURROGATE

Abstract
Embodiments of the present invention address deficiencies of the art in respect to edgified content delivery and provide a method, system and computer program product for dispatching of request fragments from a response aggregating surrogate. In one embodiment, an edgified content distribution data processing system can include an origin server configured to server markup specified pages formed from dynamically arranged fragments and a surrogate server communicatively linked to the origin server over a computer communications network and acting as a surrogate at an edge of the network on behalf of the origin server. A dependency engine can be coupled to the surrogate server and can include program code enabled to group the fragments according to interdependencies among the fragments and to load fragment groups in sequence to satisfy the interdependencies.
Description

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein:



FIG. 1 is a schematic illustration of an edgified content distribution data processing system configured for dispatching request fragments from a response aggregating surrogate; and,



FIG. 2 is a flow chart illustrating a process for dispatching request fragments from a response aggregating surrogate.





DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the present invention provide a method, system and computer program product for dispatching request fragments from a response aggregating surrogate. In accordance with an embodiment of the present invention, dependency information for fragments in a dynamically assembled page can be determined and provided to a surrogate server in the edgified network. A dependency engine coupled to the surrogate server can use the dependency information to order the loading of each of the fragments, in parallel groups where appropriate in order both to assure the presence of dependencies for dependant fragments and also to enhance performance through parallel fragment loads where possible.


In further illustration, FIG. 1 is a schematic illustration of an edgified content distribution data processing system configured for dispatching request fragments from a response aggregating surrogate. The system can include an origin server 120 configured to serve requested content to one or more content requesting clients 120 over a computer communications network 140. In order to enhance the speed in which content can be delivered to the content requesting clients 120, the origin server 120 can be coupled to a surrogate server 130 at the edge of the computer communications network 140. The surrogate server 130 can be configured to serve requested content to the content requesting clients 120 on behalf of the origin server 120.


Notably, the surrogate server 130 can be configured to assemble dynamic pages for delivery to the content requesting clients 120 in response to content requests from the content requesting clients 120. The dynamic pages can include a set of fragments 160 provided by one or more fragment sources 150 also communicatively coupled to the surrogate server 130 over the computer communications network 140. Each of the fragments 160 can be arranged to form the dynamic page. At least one of the fragments 160, however, can depend on the presence of at least one other of the fragments 160.


In this regard, a dependency hierarchy can be defined by the fragments 160 in accordance with the interdependent relationships among the fragments 160. To facilitate the loading of dependent ones of the fragments in proper order, without resorting to a sequential loading of the fragments 160, dependency data 170 provided by the origin server 120 can be processed in a dependency engine 200. The dependency engine can include program code enabled to group different ones of the fragments 160 for loading in sequence so as to satisfy the dependencies of the fragments 160 while achieving some parallel loading of others of the fragments 160.


In more particular illustration, FIG. 2 is a flow chart illustrating a process for dispatching request fragments from a response aggregating surrogate. Beginning in block 210, a page request can be received for a dynamically constructed page defined by multiple different fragments. In block 220, the dependencies of the different fragments in the dynamically constructed page can be determined and in block 230, the different fragments can be grouped in order of dependant relationships. For example, in a page of four fragments labeled A, B, C and D, if B depends upon the presence of C and D, then C and D can be grouped together for loading in parallel, followed by A and B which also can be loaded in parallel after A and B.


In block 240, the groups can be sorted in proper sequence to ensure that those fragments that are depended upon by other fragments are loaded prior to the other fragments. Thereafter, in block 250, the first group to be loaded can be retrieved and aggregated. In decision block 260, if additional groups remain to be loaded, in block 270 the next group to be loaded can be retrieved and aggregated. This process can continue for all fragment groups. When no additional fragment groups remain to be aggregated, in block 280 the dynamically aggregated page can be returned to the content requester for rendering. In this way, the dependency requirements of the fragments can be fulfilled during aggregation while allowing for some efficiencies in parallel loading portions of the fragments.


Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.


For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.


A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.

Claims
  • 1. An edgified content distribution data processing system comprising: an origin server configured to server markup specified pages formed from dynamically arranged fragments;a surrogate server communicatively linked to the origin server over a computer communications network and acting as a surrogate at an edge of the network on behalf of the origin server; and,a dependency engine coupled to the surrogate server, the dependency engine comprising program code enabled to group the fragments according to interdependencies among the fragments and to load fragment groups in sequence to satisfy the interdependencies.
  • 2. The data processing system of claim 1, wherein the program code of the dependency engine is further enabled to determine the interdependencies from dependency data provided by the origin server.
  • 3. A dynamic page assembly method comprising: identifying a selection of fragments for assembly into a dynamic page on behalf of an origin server;grouping the fragments into fragment groups based upon dependency relationships between selected ones of the fragments;aggregating the fragment groups into the dynamic page in a sequence defined to satisfy the dependency relationships; and,serving the page to a content requesting client on behalf of the origin server.
  • 4. The method of claim 3, further comprising receiving dependency data from the origin server that defines the dependency relationships for the selection of fragments.
  • 5. The method of claim 3, wherein grouping the fragments into fragment groups based upon dependency relationships between selected ones of the fragments, comprises grouping the fragments in the selection of fragments into fragment groups so as to identify those among the selection of fragments whose presence in the dynamic page are depended upon by others of the selection of fragments.
  • 6. The method of claim 3, wherein aggregating the fragment groups into the dynamic page in a sequence defined to satisfy the dependency relationships, comprises retrieving and aggregating each fragment in a fragment group in parallel.
  • 7. A computer program product comprising a computer usable medium embodying computer usable program code for dynamic page assembly, the computer program product including: computer usable program code for identifying a selection of fragments for assembly into a dynamic page on behalf of an origin server;computer usable program code for grouping the fragments into fragment groups based upon dependency relationships between selected ones of the fragments;computer usable program code for aggregating the fragment groups into the dynamic page in a sequence defined to satisfy the dependency relationships; and,computer usable program code for serving the page to a content requesting client on behalf of the origin server.
  • 8. The computer program product of claim 7, further comprising computer usable program code for receiving dependency data from the origin server that defines the dependency relationships for the selection of fragments.
  • 9. The computer program product of claim 7, wherein the computer usable program code for grouping the fragments into fragment groups based upon dependency relationships between selected ones of the fragments, comprises computer usable program code for grouping the fragments in the selection of fragments into fragment groups so as to identify those among the selection of fragments whose presence in the dynamic page are depended upon by others of the selection of fragments.
  • 10. The computer program product of claim 7, wherein the computer usable program code for aggregating the fragment groups into the dynamic page in a sequence defined to satisfy the dependency relationships, comprises computer usable program code for retrieving and aggregating each fragment in a fragment group in parallel.