DISTRIBUTED DYNAMIC WEB PAGE CACHING SYSTEM
FIELD OF THE INVENTION
This invention relates to distributed dynamic web page caching.
BACKGROUND OF THE INVENTION
Computer networks, such as the internet and private corporate networks, enable users to retrieve information from a wide variety of sources. They also enable publishers, information providers, advertisers and other information sources to supply information to these users. "Servers" are computer systems that are connected to a network and that store and supply information. One type of server on the internet is known as a "web server," which provides access to a web site. Each web site can make available one or more "web pages," which are formatted, tree-structured repositories of information, such as text, images, sounds, animations, and three- dimensional simulations. Many publishers, such as newspapers and journals, as well as corporations, individuals and organizations have established web pages. "Clients" are computer systems, each typically controlled by a user that may be connected to a network and request information from the servers on the network. In particular, clients at various locations can view web pages by "downloading" replicas of the web pages from the servers on which these web pages are stored.
SUMMARY
In an aspect, the invention features a method of dynamic web page caching includes receiving a request for a web page from a client and determining whether a page template and page component tags of the web page reside in a local cache memory. If the page template and page component tags do not reside in the local cache memory, the page template and page component tags are downloaded from a server to the local cache memory. The web page is assembled from the page template and page component tags residing in the local cache memory and the web page rendered to the client.
Embodiments may include one or more of the following.
Passing a cookie representing a client session identification (ID) from the server to the local cache memory to may be used to manage a session.
Page component tags may include page location information, parameters to be passed from the server to the page template, and expiration information. They may also include a binary large object (blob) component.
In another aspect, the invention features a network including a server having a collection of data containing web pages and a server link connecting the server to an internet. A cache system link connects a dynamic web page caching system to the internet. The dynamic web page caching system includes an assembly engine that is used to assemble web pages from components found in its local cache and a delivery engine for delivering the web pages to a client.
Embodiments of the invention may have one or more of the following advantages.
Assembly of web pages containing dynamic components is done closer to the requesting client, minimizing or eUrninating the requirement of assembling the requested page at the server and sending the web page over the internet to the client.
Specific details of dynamic page components are cached at the edge of the network, pushing the assembly and delivery of dynamic components away from the server. Caching assembly and delivery of the dynamic page components at the edge of the network results in a greater number of dynamic page views per day because a greater number of dynamic page components can be generated without having to travel through the internet.
If a satellite server and/or server goes down, i.e., off-line, there can be another satellite server to perform the work required to assemble and deliver the page.
No synchronization between satellite servers is required; each is independent and unique, not depending on any other satellite server pier.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF THE DRAWINGS
The foregoing features and other aspects of the invention will be described further in detail by the accompanying drawings, in which: FIG. 1 is a block diagram of a web page. FIG. 2 is a block diagram of a network containing a satellite server.
FIG. 3 is a block diagram of the satellite server of FIG. 2. FIG. 4 is a flow diagram of a distributed dynamic web page caching process residing on the computer network of FIG. 2.
Like reference symbols in the various drawings indicate like elements.
■ DETAD ED DESCRD?TΪON
Referring to FIG. 1, a web page 10 defines one or more regions, such as regions 14, 16, 18 and 20. Each of the regions 14, 16, 18 and 20, also referred to as components, are part of a web page template 12. Each of the components 14-20 may contain different types of information, such as text, images, graphics, animation, timers, links and so forth. Each of the components 14 through 20 of the web page template 12 may be further classified as being static or dynamic. A static component remains unchanged over a period of time. A dynamic component is a component that is a result of a computational process executed at the time that the web page 10 is requested. Dynamic components, by their very nature, exist for a discrete period of time, and thus are typically assembled at the time a client requests them from a server. The server, using specific characteristics of the dynamic components, builds the web page and delivers the web page to the requesting client.
An example of a dynamic component is one that contains current weather. The current weather may change between requests and therefore is assembled in response to a user request. Another example of a dynamic component is one that contains a personalized message, such as 'Hi Joe."
The web page 10 typically resides on a server (not shown). A client requests viewing of the web page 10 from the server. The server, having details of each component 14-20 within the web page 10, assembles the web page 10 with its associated components 14-20 and sends the web page 10 to the requesting client. In the event that each of the components 14-20 are static components, the web page 10
may be preassembled and stored on a database associated with the server. Thus, when the web page 10 is requested by a client, the server loads the web page previously stored and delivers it to a browser on the client's system If one or more of the components 14-20 are dynamic, the server assembles the dynamic components in accordance with component details know only to the server prior to delivering the web page 10 to the client.
The server responsible for the web page 10 has detail knowledge of each component 14-20 of the web page template 12. Each component 14-20 is defined by a series of parameters or tags known only to the server system. For example, each component will have an associated web page template 12, tags requesting where to get the information included in the component, what parameters, if any, need to be passed into the component, and duration information. These tags may include page information and blob information. The blob is a Binary Large Object; it may be used to represent, for example, images. Only the server knows each of the parameters. The components are wrapped around each of the components 14-20, enabling the server to assemble and render the web page 10 to the requesting client.
Referring to FIG. 2, a network 40 having a distributed dynamic web page caching process is shown to include a number of internet service providers (ISPs) 42, 44, 46 and 48, connected to an internet 50. The ISPs 42-48 provide client and server computer systems access to the internet 50. The network 40 includes a server 52 connected to the ISP 44. The network 40 also shows a client 54 having a browser 56 connected to the ISP 48. The network 40 includes the placement of a satellite server 58 connected to the ISP 48 and a satellite server 60 connected to the internet 50. In a preferred embodiment, the network 40 would contain either the satellite server 58 connected to the ISP 48 or the satellite server 60 connected to the internet 50. In other embodiments, satellite servers may be placed at other locations at "edges" of the network 40. In general, a network would have one satellite server per domain per port. When the client 54 requests the "rendering" of a web page through its browser 56 from server 52, satellite server 58, for example, in conjunction with server 52, assembles the static and dynamic components of the web page and renders the web page to the browser 56.
Referring to FIG. 3, a satellite server 80 is shown to include a content server 82 and a content server 84. The content servers 82 and 84 are linked to a web server 86 and a web server 88 through respective plug-ins 90 and 92. The web servers 86 and 88 are linked to cache memories labeled as 94, 96, 98 and 100, respectively. Each of the cache memories 94-100 are linked to a local director 102. The local director 102 includes a link 104 that provides communication to an ISP or internet.
In operation, when a request to render a web page is received on the link 104, the local director 102 searches the cache memories 94 through 100 to determine whether the requested web page template and component tags are present. If the component tags of the requested web page are contained within one of the cache memories 94-100, the content server 82 or content server 84 assembles the web page from the cached template and component tags and sends the assembled web page though the link 104 to the requesting client.
Referring to FIG. 4, a distributed dynamic web page caching process 120 includes receiving 122 a page request from a client. The process 120 determines 124 whether the page component tags and web page template of the requested web page reside in one of the satellite server caches. If the web page and its associated web page template and page component tags reside within the satellite system server cache, the satellite system assembles 126 the web page according to its web page template and page component tags and delivers 128 the assembled page to the requesting client. If the web page template and component tags of the requested web page do not reside in the satellite server cache, the process 120 obtains 130 the web page template and associated page component tags from the server. When the information needed to assemble the page components are obtained from the server, the server stores 132 the information in one of its cache memories. The process 120 sends 134 the assembled web page along with its web page template and associated page component tags to the satellite server wherein the process 120 stores 136 the web page template and component tags in the satellite server's cache memories and delivers 128 the assembled page to the requesting client. Using the process 120, a second page access finds the required information needed to assemble the requested web page in the satellite server cache memories. This is because the satellite server, from knowledge gained from the server, has
knowledge of where to build that web page from the presence of the web page template and associated page component tags in the satellite server cache memory. The satellite server may not have the logic to build the dynamic page components, but the satellite server can obtain the requisite logic from the server. In steady state, the process 120 maintains a replicated cache, i.e., all the cache components are residing in every content server within the network. Thus, if a single satellite server were to fail, another satellite server may perform the necessary work to render the requested web page. No synchronization between satellite servers is required because each is independent and unique, not being dependent on any other satellite server peer.
The process 120 also maintains session information. In an embodiment, session information is contained in cookies that are passed between the client and the satellite server. In this manner, a new session is not generated by a second request for a web page by the same user that had requested a web page from the satellite server. A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.