systems and methods for publishing objects (e.g., pages and/or fragments) include assigning expiration times to different versions of objects and determining a plurality of objects which should be published atomically, that is, together in a single action. Then, the invention includes computing updated versions of the plurality of objects and atomically publishing the updated versions wherein the updated versions are not available until after expiration times corresponding to previously published versions of at least one of the plurality of objects (e.g., a cached object) have elapsed. Advantageously, clients attempting to access related cached objects over an information network such as the Internet will not be presented with versions of related objects that are inconsistent with one another.

Patent
   6618751
Priority
Aug 20 1999
Filed
Aug 20 1999
Issued
Sep 09 2003
Expiry
Aug 20 2019
Assg.orig
Entity
Large
196
15
all paid
13. A method of publishing objects, the method comprising the steps of:
caching one or more objects of a first version to be served to a client upon request;
assigning a release time to a plurality of objects of a second version, the release time being no earlier than a time value when each of the cached objects of the first version has expired; and
publishing the plurality of objects together in a single action in accordance with the assigned release time.
28. Apparatus for publishing objects, the apparatus comprising:
at least one processor operable to: (i) cache one or more objects of a first version to be served to a client upon request, (ii) assign a release time to a plurality of objects of a second version, the release time being no earlier than a time value when each of the cached objects of the first version has expired, and (iii) publish together in a single action the plurality of objects in accordance with the assigned release time.
17. A system for publishing a plurality of objects, the system comprising:
at least one publishing system for constructing objects, determining expiration times of objects, and publishing objects together in a single action;
at least one server operatively coupled to the at least one publishing system for serving published objects to at least one client; and
at least one cache operatively coupled to the at least one server for storing at least one object remotely from said at least one server.
1. A method of publishing objects, the method comprising the steps of:
assigning expiration times to different versions of objects;
determining a plurality of objects which should be published together in a single action; computing
updated versions of said plurality of objects; and
publishing said updated versions together in a single action wherein said updated versions are not available until after expiration times corresponding to previously published versions of at least one of said plurality of objects have elapsed.
32. An article of manufacture for publishing objects, comprising a machine readable medium containing one or more programs which when executed implement the steps of:
assigning expiration times to different versions of objects;
determining a plurality of objects which should be published together in a single action;
computing updated versions of said plurality of objects; and
publishing said updated versions together in a single action after expiration times corresponding to previously published versions of said plurality of objects have elapsed.
2. The method of claim 1, further comprising the steps of:
combining the plurality of objects (first plurality) and at least one other plurality of objects (second plurality);
assigning a release time to the combination of the first and second pluralities, the release time being no earlier than the maximum release time respectively assigned to the constituent pluralities; and
publishing the first and second pluralities together in a single action in accordance with the maximum release time.
3. The method of claim 2, further comprising the step of determining whether a combination of the first and second pluralities satisfy one or more constraints prior to combining them.
4. The method of claim 3, wherein the combination of the first and second pluralities is published together in a single action when it satisfies the one or more constraints.
5. The method of claim 3, wherein the first and second pluralities are sequentially published when the combination does not satisfy the one or more constraints.
6. The method of claim 3, wherein a constraint is that a difference of the constituent release times is not greater than a threshold value.
7. The method of claim 3, wherein a constraint is that the second plurality is the next plurality of objects to be published after the first plurality.
8. The method of claim 3, wherein a constraint is that the second plurality is consistent with respective pluralities of objects to be published between the first and second pluralities.
9. The method of claim 1, further comprising the steps of:
assigning release times to more than one plurality of objects waiting to be published; and
publishing together in a single action the plurality having the lowest release time that is consistent with preceding pluralities of objects.
10. The method of claim 1, wherein an object is one of a page and a fragment.
11. The method of claim 1, wherein data is published on the Internet and an object is at least a portion of a Web page.
12. The method of claim 1, wherein said at least one of said plurality of objects comprises at least one cached object.
14. The method of claim 13, further comprising the steps of:
combining the plurality of objects (first plurality) and at least one other plurality of objects (second plurality);
assigning a release time to the combination of the first and second pluralities, the release time being no earlier than the maximum release time respectively assigned to the constituent pluralities; and
publishing the first and second pluralities together in a single action in accordance with the maximum release time.
15. The method of claim 14, further comprising the step of determining whether a combination of the first and second pluralities satisfy one or more constraints prior to combining them.
16. The method of claim 14, further comprising the steps of:
assigning release times to more than-one plurality of objects waiting to be published; and
publishing together in a single action the plurality having the lowest release time that is consistent with preceding pluralities of objects.
18. The system of claim 17, further wherein the publishing system combines the plurality of objects (first plurality) and at least one other plurality of objects'(second plurality); assigns a release time to the combination of the first and second pluralities, the release time being no earlier than the maximum release time respectively assigned to the constituent pluralities, and publishes the first and second pluralities together in a single action in accordance with the maximum release time.
19. The system of claim 18, further wherein the publishing system determines whether a combination of the first and second pluralities satisfy one or more constraints prior to combining them.
20. The system of claim 19, wherein the combination of the first and second pluralities is published together in a single action when it satisfies the one or more constraints.
21. The system of claim 19, wherein the first and second pluralities are sequentially published when the combination does not satisfy the one or more constraints.
22. The system of claim 19, wherein a constraint is that a difference of the constituent release times is not greater than a threshold value.
23. The system of claim 19, wherein a constraint is that the second plurality is the next plurality of objects to be published after the first plurality.
24. The system of claim 19, wherein a constraint is that the second plurality is consistent with respective pluralities of objects to be published between the first and second pluralities.
25. The system of claim 17, further wherein the publishing system assigns release times to more than one plurality of objects waiting to be published, and publishes together in a single action the plurality having the lowest release time that is consistent with preceding pluralities of objects.
26. The system of claim 17, wherein an object is one of a page and a fragment.
27. The system of claim 17, wherein data is published on the Internet and an object is at least a portion of a Web page.
29. The apparatus of claim 28, wherein the processor is further operable to combine the plurality of objects (first plurality) and at least one other plurality of objects (second plurality), assign a release time to the combination of the first and second pluralities, the release time being no earlier than the maximum release time respectively assigned to the constituent pluralities, and publish the first and second pluralities together in a single action in accordance with the maximum release time.
30. The apparatus of claim 29, wherein the processor is further operable to determine whether a combination of the first and second pluralities satisfy one or more constraints prior to combining them.
31. The apparatus of claim 28, wherein the processor is further operable to assign release times to more than one plurality of objects waiting to be published, and publish together in a single action the plurality having the lowest release time that is consistent with preceding pluralities of objects.

The present invention relates to publishing of data such as, for example, on information networks such as the Internet, and, more particularly, to systems and methods for publishing data in association with a cache wherein the data has expiration times associated therewith.

The Internet or World Wide Web (WWW or the Web) as it exists today, allows data to be cached at various places in the network, such as at proxy servers. Objects which are cached at a proxy server may have expiration times associated with them indicating when they expire. A key problem with caching objects on the Web is that there is often no way to accurately predict in advance when an object should expire. Therefore, it is possible for a proxy cache to contain pages from the same Web site which are inconsistent with each other.

For example, suppose that cached page p1 contains the result from a sporting event with an expiration time of 8:30. At 8:15, a new page p2 is cached at the same proxy server with an updated result of the same sporting event. Between 8:15 and 8:30, the cache may be serving copies of p1 and p2 which are inconsistent with each other. It may be preferable not to cache p2 until the cached version of p1 is invalidated or updated.

Thus, it would be highly advantageous to provide systems and methods for publishing data consistently, for example, in remote caches wherein such systems and methods would be compatible with existing information networks such as the Web and would not require Web sites to be able to push data or invalidation/update messages to remote caches.

The present invention provides systems and methods for publishing objects, for example, on an information network, such that expiration-sensitive data may be consistently cached. Such inventive systems and methods are compatible with existing information networks such as the Web and do not require Web sites to be able to push data or invalidation/update messages to remote caches. It is to be understood that the term "expiration-sensitive data" refers to available data, for example, data on an information network, that has an expiration time (e.g., time after which the data is no longer valid) associated therewith.

In one aspect of the inventions systems and methods for publishing objects (e.g., pages and/or fragments)include assigning expiration times to different versions of objects and determining a plurality of objects which should be published atomically. Then, the invention includes computing updated versions of the plurality of objects and atomically publishing the updated versions wherein the updated versions are not available until after expiration times corresponding to previously published versions of at least one of the plurality of objects (e.g., a cached object) have elapsed. The term "atomic" refers to the publication of the plurality of objects in a single action, that is, the objects in the plurality are published together.

In another aspect of the invention, systems and methods for publishing objects include caching one or more objects of a first version to be served to a client upon request, for example, via an information network. Further, a release time is assigned to a plurality (e.g., a first bundle) of objects of a second version wherein the release time is no earlier than a time value when each of the cached objects of the first version has expired. Lastly, the first bundle of objects is atomically published in accordance with the assigned release time. Advantageously, clients attempting to access related cached objects over the information network will not be presented with versions of related objects that are inconsistent with one another.

In yet another aspect of the invention, the systems and methods may include the step of combining the first bundle of objects and at least a second bundle of objects and assigning a release time to the combination of the first and second bundles, the release time being no earlier than the maximum release time respectively assigned to the constituent bundles. Then, the first and second bundles are atomically published in accordance with the maximum release time. The publication of such compound bundles reduces or eliminates delays that may be associated with object publication. In a further aspect of the invention, the combination of bundles may be subject to certain constraints that are set to ensure consistency of cached data.

In still a further aspect of the invention, the systems and methods may include the steps of assigning release times to more than one bundle of objects waiting to be published and atomically publishing the bundle having the lowest release time that is consistent with preceding bundles of objects. In this way, the publication order of non-combined bundles may be changed in order to get content published more efficiently.

These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.

FIG. 1A is a block diagram of an expiration-sensitive data publishing and caching system according to an illustrative embodiment of the invention;

FIG. 1B is a block diagram of an illustrative hardware implementation of one or more of the components of an expiration-sensitive data publishing and caching system according to the invention;

FIG. 2 is a flow diagram of a bundle publishing method according to an illustrative embodiment of the invention;

FIG. 3 is a flow diagram of a bundle combining method according to an illustrative embodiment of the invention;

FIG. 4 is a flow diagram of a bundle publishing selection method according to an illustrative embodiment of the invention;

FIG. 5 is a block diagram of an expiration-sensitive data publishing and caching system according to another illustrative embodiment of the invention;

FIG. 6 is a block diagram of an expiry server extension according to an illustrative embodiment of the invention;

FIGS. 7A through 7C depicts a first part of an example illustrating an expiration-sensitive data publishing and caching method according to the invention;

FIGS. 8A and 8B depicts a second part of an example illustrating an expiration-sensitive data publishing and caching method according to the invention; and

FIGS. 9A and 9B depicts a third part of an example illustrating an expiration-sensitive data publishing and caching method according to the invention.

The present invention will be explained below in the context of an illustrative Internet or Web implementation. However, it is to be understood that the present invention is not limited to an information network architecture. Rather, the invention is more generally applicable to data publication including, for example, cached expiration-sensitive data with regard to which it is desirable to provide improved consistency between such data.

An illustrative embodiment of the invention is depicted in FIG. 1A. As shown, the illustrative system 100 of the invention may include a publishing system 110 which creates Web pages. According to the invention, a plurality of pages, known as a "bundle," is published in a single or atomic action. The bundle might be comprised of pages which have to be published atomically in order to satisfy particular consistency constraints. An example of a constraint is evident from the data inconsistency example discussed above, e.g., the consistency constraint would be not to cache page p2 until the cached version of page p1 is invalidated or updated. Other examples of consistency constraints which maybe applied in accordance with the invention are discussed in the paper by the present inventors entitled: "A Publishing System for Efficiently Creating Dynamic Web Content," IBM Research Report, RC21546, July 1999. When a bundle is published, the pages comprising the bundle are made available to clients 140 from the Web server 120. Web pages may be cached within a proxy cache 130. It is to be appreciated that the system 100 may include multiple publishing systems (110), Web servers (120), proxy caches (130), and/or clients (140).

Various illustrative methodologies for providing publishing data and consistent caching of expiration-sensitive data in accordance with system 100 will be explained below. First, however, an illustrative hardware implementation of one or more of the components of an expiration-sensitive data caching system according to the invention will be discussed.

FIG. 1B depicts an illustrative hardware implementation that may be respectively employed, for example, by the publishing system 110, the Web server 120, the proxy cache 130, and/or the client 140. In this particular implementation, a processor 150 for controlling and performing the various operations associated with the illustrative systems of the invention depicted in FIGS. 1, 5, and 6 (FIGS. 5 and 6 will be explained below), is coupled to a memory 160 and a user interface 170. It is to be appreciated that the term "processor" as used herein is intended to include any processing device, including a CPU (central processing unit), which may be utilized in a client computer, server computer, or any other computer employed in conjunction with the invention. Also, the term "processor" may refer to more than one individual processor. The term "memory" as used herein is intended to include memory associated with a processor or CPU, such as, for example, RAM, ROM, a fixed memory device (e.g., hard drive), a removable memory device (e.g., diskette), a flash memory, etc. In addition, the term "user interface" as used herein is intended to include, for example, one or more input devices, e.g., keyboard, for inputting data to the processing unit, and/or one or more output devices, e.g., CRT display and/or printer, for providing results associated with the processing unit. Also, it is to be understood that one or more processing devices within the network may share associated resources.

Accordingly, computer software including instructions or code for performing the methodologies of the invention, as described herein, may be stored in one or more of the associated memory devices (e.g., ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (e.g., into RAM) and executed by a CPU. In any case, it should be understood that the elements and operations illustrated in the figures may be implemented in various forms of hardware, software, or combinations thereof, e.g., one or more special purpose processors with associated memory, application specific integrated circuit(s), functional circuitry, one or more appropriately programmed general purpose digital computers with associated memory, etc. Given the teachings of the invention provided herein, one of ordinary skill in the related art will be able to contemplate other implementations of the elements of the invention.

Referring now to FIG. 2, a flow diagram depicting how portions of the system 100 operate in the context of a process 200 is shown. In step 210, a bundle is created by the publishing system 110. Whenever a cacheable page p is published, the expiration time exp1(p) is maintained by the publishing system 110. In this context, for example, publishing a page means that a publishing system 110 makes a page visible to a client 140 via a Web server 1220 While we do not make the assumption that a Web server 120 has the ability to push data to a proxy cache 130 or client 140, the Web server may in fact have such capability, which may be used in conjunction with the invention. Further, it is to be appreciated that header information accompanying a page may be used to indicate whether a page is capable of being cached, i.e., cacheable. On the Web today, dynamic Web pages and personalized pages associated with cookies are often not considered cacheable by proxy caches, while many other static pages are considered to be cacheable.

Let b1 be a bundle of pages created by the publishing system 110. We cannot necessarily publish b1 immediately and still preserve consistency of remote proxy caches. For example, suppose that the current time is 8:30. Let x and y be cached pages of b1 which both contain common information. Suppose that exp1(x)=8:31 and exp1 (y)=10:00. If we publish b1 immediately, the new version of x may go into a proxy cache after 8:31. Suppose this happens at 8:32. That same proxy cache may continue to cache the old version of y until 10:00. Thus, between 8:32 and 10:00, the proxy cache will serve inconsistent versions of x and y. Thus, an improved method is needed for publishing b1 in order to preserve consistency.

In step 220, the publishing system 110 sets the release time of b1, RT(b1), to be no earlier than the maximum of exp1 values for all elements of b1 which might be cached, i.e., a time when all members of b1 currently cached will have expired. Between the current time and RT(b1), Web server(s) 120 will continue to serve the previous versions of all objects in b1; for those which are cacheable, the system assigns an expiration time no later than RT(b1).

At time RT(b1), b1 is published atomically, in step 230. For objects in b1 which are cacheable, the publishing system 110 attempts to assign similar expiration times to objects likely to be updated at the same time if such a determination can be made.

In some systems, it may be possible to publish b1 before RT(b1). This could be the case if there are delays between when an object is published and when it might be stored in a proxy cache. For example, suppose that b1 includes a cached object o such that it takes at least three seconds for o to appear in a proxy cache after it is published. It might then be possible to publish the new version of b1 two seconds before the previous version of o expires.

This approach can sometimes delay publication of a bundle. However, the system 110 of the invention also has the ability to combine multiple bundles waiting to be published into a single bundle referred to as a "compound bundle." The release time of a compound bundle is no earlier than the maximum of release times for all constituent bundles. Combining bundles can sometimes delay publication of some pages. Thus, the inventive system applies selectivity in combining bundles as depicted in the flow diagram of FIG. 3.

Referring to the process 300 depicted in FIG. 3, b1 and b2 are two bundles awaiting publication (step 310). In step 320, it is determined whether the proper set of constraints for merging the bundles is satisfied. The set of constraints could be,(but is not limited to) the following:

(1) Suppose that b1 is the next bundle to be published. The constraint is to only combine a later bundle b2 with b1 if RT(b2)-RT(b1) is less than a certain threshold and, either:

(a) b2 is the next bundle to be published after b1, or

(b) b2 is consistent with all bundles to be published between b1 and b2.

Thus, if the constraints are satisfied, the bundles are combined and published by the publishing system 110 in step 330. If the constraints are not satisfied, the bundles are published sequentially by the publishing system 10 in step 340.

It is also possible to change the order in which un-merged (non-combined) bundles are published in order to get content published more quickly as depicted by the process 400 FIG. 4. In step 410, multiple bundles are waiting to be published. In step 420, the publishing system 110 calculates RT (release time) for each awaiting bundle assuming it were to be the next one to be published (this assumption is necessary because RT for remaining bundles may change after a bundle is published to the outside world, e.g., clients). In step 430, the publishing system 110 publishes to the outside world the bundle with the lowest RT value which is consistent with all bundles ahead of it. In some cases, it is possible to publish one or more pages of a bundle before the release time of the bundle in order to get important information to the outside world. However, this may have the negative effect of violating consistency.

It is to be appreciated that the present invention may be implemented in accordance with one or more of the various embodiments disclosed in the following U.S. patent applications: (i) "Method and System for Rapid Publishing and Censoring Information," by J. R. Challenger, C. D. Ferslat, A. Iyengar, P. Reed, G. Spivak and K. Witting, identifiedby U.S. Pat. No. 09/283,562, still pending, and filed Apr. 1, 1999; (ii) "Method and System for Publishing Dynamic Web Documents," by J. R. Challenger, C. D. Ferstat, A. Iyengar, P. Reed, G. Spivak and K. Witting, Ser. No. 09/283,542, still pending, and filed Apr. 1, 1999; and (iii) "Method and System for Efficiently Constructing and Consistently Publishing Web Documents," by J. R. Challenger, C. D. Ferstat, A. Iyengar; P. Reed and K. Witting, Ser. No. 09/283,561, still pending, and filed Apr. 1, 1999; the disclosures of which are incorporated herein by reference.

Referring now to FIGS. 5 and 6, preferred embodiment of the system and associated methodologies described above is shown in the context of an expiration-sensitive data publishing and caching system 500. It is to be appreciated that the embodiment illustrated in accordance with FIGS. 5 and 6 include one preferred implementation of the elements illustrated in FIG. 1A described above. For example, the publishing system 110 (FIG. 1A) may include the following elements, to be explained below, in FIG. 5: a pre-production stage 502, a trigger monitor 504, a production stage 506, a distributor 508, a Web server 514, an expiry table 516, expiry server extensions 518, a central expiry manager 520, and a trigger monitor 521. The Web server 120 (FIG. 1A) may include the following elements, to be explained below, in FIG. 5: an origin server 510, a DFS 522, and a 2216 unit 524. The proxy cache 130 and client 140 (FIG. 1A) may be included in the Internet users 512 block of FIG. 5. As FIGS. 5 and 6 illustrate one implementation, it is to be understood that the elements illustrated in FIG. 1A may include more, less, or different components than those shown in FIGS. 5 and 6.

In this embodiment, the invention may preferably employ a publishing system as described in the above-referenced paper by the present inventors entitled: "A Publishing System for Efficiently Creating Dynamic Web Content," IBM Research Report, RC21546, July 1999. In that particular publishing system, methods for efficiently creating dynamic Web content are disclosed. Examples of Web sites that provide dynamic content may include sports sites, stock market sites, and virtual stores or auction sites where information on available products and subjects is constantly changing. In order to reduce the overhead of generating dynamic pages from scratch, the publishing system disclosed in the referenced paper composes dynamic pages from simpler entities referred to as "fragments." Fragments typically represent parts of Web pages which change together; when a change to underlying data occurs which affects several Web pages, the fragments affected by the change can easily be identified. It is possible for a fragment to recursively embed another, fragment. The system composes Web pages from simpler fragments. A page is a complete entity which may be served to a client. An object may be either a page or a fragment.

A solution that this preferred embodiment provides with respect to improving data consistency associated with expiration-sensitive cached data may be considered as focusing on two main areas: publishing and serving of expiry information.

Note that expiry information is all about time. It is critical that all machines involved in this process are synchronized to some known time source. Slight drift (e.g., milliseconds) may be tolerable, but anything more than that and the systems performance may degrade. The present invention provides solutions that address these concerns and improves cached data consistency.

Publishing As shown in FIG. 5, dynamic Web content is developed between a pre-production stage 502 and a production stage 506. As is known, these stages may contain such processes as content development, editing and quality assurance. In a preferred embodiment, a bundle of fragments progresses through each of the stages of publishing and is composed by a trigger monitor (TM) 504 located between the pre-production stage 502 and the production stage 506. A trigger monitor is preferably a software module that takes objects from one or more "sources," constructs pages, and writes the constructed pages to one or more "sinks." It is to be understood that a "source" is an input and a "sink" is an output. After the trigger is completed on production, an acknowledgment signal (Ack) is sent from the TM 504 to a distributor 508.

The distributor 508 is a component which serves to distribute content to origin servers (OS) 510 from where the public will access it. The public may be represented in the Internet users block 512. The content may be provided to the distributor 508 by the production stage 506 via Web server 514. The distributor 508 is responsible for holding onto bundles of content until such a time that it can consistently be published, taking into consideration the expiry times of each of the parts of the bundle. TM source-to-sink is then used as the distribution mechanism. That is, a trigger monitor is preferably included in the distributor 508 which is used to move data from one location to another. This is referred to as "transport" or "source-to-sink." Any data moving tool could be employed, e.g., ftp, kermit, etc. It is to be appreciated that the trigger monitor 504 between pre-production and production, as described above, performs functions in addition to moving data, e.g., page assembly, and thus operates as more than just a transport.

Upon receiving the Ack signal from the TM 504, the distributor 508 performs the following operations:

1. Looks up, in an expiry table 516, the Absolute Expiry Time (AET) of all fragments. 110 in the-bundle;

2. Calculates the Release Time (RT) as the latest AET, i.e., the time at which the current version of all fragments will have expired. Objects that have never been published are considered to have an AET of 0.

3. Sets the Maximum Expiry Time (MET) for all fragments to RT;

4. Sleeps (remains substantially inactive) until one second before RT. The distributor could sleep until. RT, but since expiry times preferably have a one second granularity, it can begin working slightly early. This gives the system the potential to have finished processing before everything expires, or if the processing is not complete, this approach reduces the length of time for which expired content is served by a second.

Since bundles are continuously arriving at the production stage 506, the distributor 508 is preferably multi-threaded so it can process multiple bundles in parallel. As with other levels, bundles can merge on production while waiting for the distributor to send them to the OS 510. As a bundle arrives, if it is merged, we preferably ensure that only one thread is dealing with the merged bundle, and that the RT of the now merged bundle is recalculated. So we either kill off (disregard) the already sleeping thread, or code the thread wake-up to handle the fact that the bundle contents may have changed while the distributor was sleeping, and it's RT may have been pushed out, so it will need to sleep a little longer.

Upon waking up, the distributor 508:

1. After dealing with potential merges, the distributor sends a trigger to the TM responsible for moving content from production to OS, i.e., TM 521. This TM will be performing source-to-sink for multiple files in one trigger, where there will be as many sinks as there are OSs. Using a trigger monitor, it is possible to have a number of different OS types. Typically, within the environment this invention may be implemented, this may include a file system, e.g., a DFS (Distributed File System) from Transarc, and a network cache accelerator, e.g., a 2216 from IBM which performs routing: and web server caching. A DFS (shown in FIG. 5 as DFS 522) allows multiple machines to share a common disk or file system over the network. DFS is similar to an AFS (Andrew File System), also from Transarc, an NFS (Network File System) from Sun Microsystems, or an SMB from Microsoft. The DFS is preferred since it is particularly suitable for large scale Web systems or "farms" such as with which the invention may be implemented. A 2216 (shown in FIG. 5 as 2216 524) is part router and part web server cache/proxy. As shown in FIG. 5, the 2216 can serve data to Internet users 512, while the DFS may do the same via origin server 510.

2. When the Ack signal is received for this trigger, the distributor resets MET for all the objects back to the default MAX_INT. MAX_INT is the largest possible integer that the particular system can represent. On systems that use 4 bytes, or 32-bit representations for integer numbers, this would be 2,147,483,647. Typically programming languages provide a constant to represent this number, and in Java this constant is called MAX_INT.

It is to be understood that bundles are being merged in order to ensure that content is consistently published. However, the production stage may provide facilities for clearing data log-jams (back ups) at the expense of consistency. The expiry system may recommend how to break up the bundles to cause the least disruption, e.g., an article can be published without the pages that link it in, it simply won't be surfaced yet. By programmatically analyzing all the items in the log-jam and how they interrelate, it is possible to recommend ways to clear things with minimal breakage.

Similarly, there may be times when content just has to be pushed out, rather than letting the distributor hold it up. A mechanism within the distributor may be made available to force content to be distributed, with the knowledge that for some users they may still be seeing old cached copies, rather than the new ones.

Serving

In parallel to publishing, files are continually being served. Each time a file is served it has expiry headers added to it to enable caches to hold onto the content and serve it. In order to do this, system 500 includes one or more server extensions (service/servlet) 518 which look up the expiry information and add it to each file served. Since the OS infrastructure employed in the context of FIG. 5 is distributed, and users may be served different parts of a page from different complexes, the invention provides for all OSs to work off the same expiry table to ensure content consistency. It is to be appreciated that a complex is a physical location which houses origin servers. Typically, complexes are located where they can be easily connected to the Internet with large amounts of bandwidth available.

One way to achieve that all OSs work off the same expiry table is to take the approach of caching expiry times at the origin servers and refreshing them once they expire from a central source. This can either be done "in-line" as the server serves up the content, or by an external daemon maintaining the expiry cache. The in-line approach may carry more risk since the client must wait for the server to determine the expiry from the remote centralized server. During this time, the user is waiting for the content. The other approach places the effort of updating the cache on another daemon. The external daemon approach will now be described in the context of FIG. 6.

First, as a request comes in for a piece of content, the Web server (510 or 514) calls the server extension 518. This server extension does a look up into a data structure such as a hash table of URLs to get the AET for the content it's trying to serve. If no AET was returned then the URL wasn't found in the cache 604, so it is added to a list of cache misses 606, and the extension returns to let the Web server handle the request as if it hadn't been called, i.e., send a "304" or the actual content.

A "304" is an HTTP return code used to indicate to the client (e.g., a browser or proxy) that the copy it has in it's cache has the same modified time as the copy on the server. When a client initially requests a resource (page, image, etc.), it gets the requested item back together with a set of headers. One of these headers specifies the Last-Modified time of the resource. If the client caches resources locally, subsequent requests for the same resource can include an If-Modified-Since header specifying the Last-Modified time. The server, rather than sending the resource again, can send a "304" back to indicate to the client that it's cached copy is the same as the one of the server. This is a simple form of caching, but the client must still check each resource each time, rather than using expiry headers in which the client can guarantee that the copy it has will be valid until a given time.

If an AET was returned, the "exit" looks to see if it has passed, if it hasn't then it builds an expiry header (and any other headers required to get the content to cache) using the AET. If the AET has passed, then the "exit" returns as it did when not finding the AET. "Exit" in this instance simply means the piece of code/application performing the job. Typically modern programs allow you to add your own plug-in modules to perform specific functions over and above what the original designer produced. These plug-ins are hooked into the program at one of several "exit" points designed in by the original designer. Simply, an "exit" is an API point within an application data flow to which you can attach home-grown code to perform some specialist function.

Second, the other end of this is the updater 608 which keeps the cache fresh and handles cache misses. The updater 608 views the cache sorted by AET such that as each AET passes it can request from a Central Expiry Manager (CEM). 520 what the new AET for that URL should be and update the cache table accordingly. Similarly, for URLs in the list of cache misses, it uses the CEM to get the initial value and inserts it into the cache.

In one embodiment, the cache table is an in memory data structure, which may be pinned since it may grow rather large, e.g., 100,000 URLs, each approximately 80 bytes long, plus expiry time is around 8 Mb. Of course this is a memory table, so restarting the daemon flushes the table. To get over the obvious startup cost of doing this, the updater preferably pre-populates the cache on startup by requesting the working set of AETs from the CEM (the working set being to documents most people are looking at right now).

A disadvantage to not looking up the expired AETs on-demand is that the updater may end up maintaining entries in the table that are no longer being used (since you have no knowledge of the working set that the server is currently serving). One approach to get around this is to tag each time a URL is used and run a least-recently used policy on the table to remove values that are no longer being used and hence reduce the number of redundant updates.

Another solution which precludes the Web server from having to write to the expiry cache (and the locking issues that multiple writers raise) is to add the time that the URL was first put into the cache, and then remove an entry after a certain period of time. This way, old pages that are not being viewed would not be maintained, and more common pages would be recreated since they are being served.

In a preferred embodiment, the URL cache entry time may be combined with the working set pre-population approach wherein the working set is pinned so it does not get flushed. In this embodiment, the cache table is small and the number of redundant updates is reduced.

The expiry table in the CEM contains:

(i) URL--the uniform resource locator or the unique name for the piece of content in question. This URL may be a directory, in which case the values in this row apply to all URLs in that directory, and subdirectories, unless there is an entry for a more specific URL.

(ii) Absolute Expiry Time (AET)--the time at which this URL expires. Typically this will be a number of "seconds since the epoc," i.e., a "long." "Epoc" is a term coined in the UNIX environment to refer to a known point in time. The epoc on UNIX machines is Jan. 1, 1970 and, subsequently, time is measured as the number of seconds since this point in time. Hence, "seconds since the epoc" is the simply a time of day. This number of seconds is stored in a data type called a "long" (short for "long integer").

(iii) Time-To-Live (TTL)--the relative length of time for which a piece of content can be cached in seconds. This is used by the CEM to work out what the new expiry time for a piece of expired content will be.

(iv) Maximum Expiry Time (MET)--normally has the value of MAX_INT, this value is used by the publishing system to "cap" the AET while a piece of content is being held by the distributor. In any process updating, the AET should not update to a value greater than this value.

When the CEM 520 receives a request from an updater,it looks up the given URL in the expiry table, updates it if the AET has passed, and returns the AET to the updater. As stated above, updating an AET using the URLs TTL may be done as follows:

AETnew=min(AET+TTL, MET)

The CEM handles connections from all the OSs, for example, by maintaining a connection with them to avoid the overhead of establishing the connection. If an OS is disconnected, it retries connecting back to the CEM, with the CEM listening for such connections.

Additionally, the CEM may provide an API (application programming interface) to allow programs to maintain the expiry table, e.g., changing the TTL for a URL or creating a more specific URL in the table.

For scaling and performance, a CEM may act as a cache, itself, and pull values from another CEM rather than calculating values itself. This may be realized in an environment where a global CEM cascades to in complex CEMs, which in turn talk to the updaters on the serving nodes in that complex. For example, we may have a primary CEM in Sydney, with. secondary CEMs in each serving complex. The nodes would hit the secondary CEMs.

Referring now to FIGS. 7A-7C, 8A and 8B, and 9A and 9B, an example of improved expiration-sensitive data publishing and caching according to the invention is illustrated. In FIG. 7A, suppose we have 3 resources (e.g., pages, images, etc.) on our site, A, B and C. Each is published at time 0 and hence assigned an AET equal to their TTL, i.e., 12, 24 and 31. respectively. IN FIG. 7B, at time 5, someone re-publishes A and C. In order to maintain consistency, we cannot release these new version of A or C until they have both expired, so we calculate the release time (RT) for this file group as time 31, and set all resources in the group to have that as their MET. In FIG; 7C, at time 12, A expires, so we update it's AET by adding it's TTL, ensuring we don't update it beyond it's MET. A's new expiry time is hence 27.

In FIG. 8A, at time 24, expires, so we update it's AET by adding it's TTL. B does not have an MET, so it's new expiry time is 44. In FIG. 8B, at time 27 A expires, so we again update it's AET. This time, MET prevails and A's expiry time is set to 31 since AET+TTL>MET for A.

In FIG. 9A, at time 31, we can now release the new copies of A and C and ensure that they will be consistently received by everyone since nobody should be caching the old versions beyond this time. In FIG. 9B, in order to now allow the new versions of A and C to be cached we reset their METs and once again update their AETs into the future by adding their TTL. AET for A becomes 46, and for C becomes 91 .

Although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention.

Challenger, James Robert Harold, Iyengar, Arun Kwangil, Ferstat, Cameron Donald, Reed, Paul, Witting, Karen A.

Patent Priority Assignee Title
10007954, Aug 23 2013 International Business Machines Corporation Managing an initial post on a website
10049412, Aug 23 2013 International Business Machines Corporation Managing an initial post on a website
10055880, Dec 06 2016 ACTIVISION PUBLISHING, INC Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
10095431, Jun 18 2015 CIGENT TECHNOLOGY, INC Device controller and method of enforcing time-based sector level security
10099140, Oct 08 2015 ACTIVISION PUBLISHING, INC ; Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
10114903, Feb 07 2000 Microsoft Corporation Method and apparatus for content synchronization
10118099, Dec 16 2014 ACTIVISION PUBLISHING, INC System and method for transparently styling non-player characters in a multiplayer video game
10137376, Dec 31 2012 ACTIVISION PUBLISHING, INC System and method for creating and streaming augmented game sessions
10157236, May 23 2011 RADWARE CANADA HOLDINGS INC Optimized rendering of dynamic content
10179289, Jun 21 2016 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
10213682, Jun 15 2015 ACTIVISION PUBLISHING, INC System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
10216743, Feb 09 2017 International Business Machines Corporation Format management for a content repository
10226701, Apr 29 2016 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
10226703, Apr 01 2016 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC System and method of generating and providing interactive annotation items based on triggering events in a video game
10232272, Oct 21 2015 Activision Publishing, Inc. System and method for replaying video game streams
10245509, Oct 21 2015 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
10284454, Nov 30 2007 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
10286314, May 14 2015 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
10286326, Jul 03 2014 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
10300390, Apr 01 2016 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC System and method of automatically annotating gameplay of a video game based on triggering events
10315113, May 14 2015 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
10322351, Jul 03 2014 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
10376781, Oct 21 2015 Activision Publishing, Inc. System and method of generating and distributing video game streams
10376792, Jul 03 2014 Activision Publishing, Inc. Group composition matchmaking system and method for multiplayer video games
10376793, Feb 18 2010 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
10421019, May 12 2010 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
10455043, Sep 20 2013 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
10463964, Nov 17 2016 ACTIVISION PUBLISHING, INC Systems and methods for the real-time generation of in-game, locally accessible heatmaps
10463971, Dec 06 2017 ACTIVISION PUBLISHING, INC System and method for validating video gaming data
10471348, Jul 24 2015 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
10486068, May 14 2015 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
10500498, Nov 29 2016 Activision Publishing, Inc. System and method for optimizing virtual games
10530888, Jun 01 2016 HOME BOX OFFICE, INC. Cached data expiration and refresh
10537809, Dec 06 2017 ACTIVISION PUBLISHING, INC System and method for validating video gaming data
10542074, Aug 12 2013 Saturn Licensing LLC Stream transmission using MPEG media transport (MMT)
10545911, Feb 09 2017 International Business Machines Corporation Format management for a content repository
10545912, Feb 09 2017 International Business Machines Corporation Format management for a content repository
10561945, Sep 27 2017 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
10573065, Jul 29 2016 ACTIVISION PUBLISHING, INC Systems and methods for automating the personalization of blendshape rigs based on performance capture data
10586380, Jul 29 2016 ACTIVISION PUBLISHING, INC Systems and methods for automating the animation of blendshape rigs
10596471, Dec 22 2017 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
10627983, Dec 24 2007 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
10650539, Dec 06 2016 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
10664440, Feb 09 2017 International Business Machines Corporation Format management for a content repository
10668367, Jun 15 2015 ACTIVISION PUBLISHING, INC System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
10668381, Dec 16 2014 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
10694352, Oct 28 2015 ACTIVISION PUBLISHING, INC System and method of using physical objects to control software access
10702779, Nov 17 2016 Activision Publishing, Inc. Bandwidth and processing efficient heatmaps
10709981, Nov 17 2016 ACTIVISION PUBLISHING, INC Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
10735322, May 28 2010 Radware, Ltd. Accelerating HTTP responses in a client/server environment
10747685, Jan 31 2009 KYNDRYL, INC Expiring virtual content from a cache in a virtual universe
10765948, Dec 22 2017 ACTIVISION PUBLISHING, INC Video game content aggregation, normalization, and publication systems and methods
10771581, Sep 20 2013 Yottaa Inc Systems and methods for handling a cookie from a server by an intermediary between the server and a client
10789060, Aug 12 2015 Comcast Cable Communications, LLC Providing and using different update times for a resource
10807003, Apr 29 2016 Activision Publishing, Inc. Systems and methods for determining distances required to achieve a line of site between nodes
10818060, Sep 05 2017 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
10827021, Sep 20 2013 Yottaa, Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
10835818, Jul 24 2015 Activision Publishing, Inc. Systems and methods for customizing weapons and sharing customized weapons via social networks
10857468, Jul 03 2014 Activision Publishing, Inc. Systems and methods for dynamically weighing match variables to better tune player matches
10861079, Feb 23 2017 ACTIVISION PUBLISHING, INC Flexible online pre-ordering system for media
10864443, Dec 22 2017 ACTIVISION PUBLISHING, INC Video game content aggregation, normalization, and publication systems and methods
10898813, Oct 21 2015 Activision Publishing, Inc. Methods and systems for generating and providing virtual objects and/or playable recreations of gameplay
10905963, Dec 31 2012 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
10915894, Apr 27 2017 REFINITIV US ORGANIZATION LLC Systems and methods for distributed data mapping
10924574, Sep 20 2013 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
10956909, Apr 27 2017 REFINITIV US ORGANIZATION LLC Systems and methods for identity atomization and usage
10974150, Sep 27 2017 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
10981051, Dec 19 2017 ACTIVISION PUBLISHING, INC Synchronized, fully programmable game controllers
10981069, Mar 07 2008 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
10984175, Aug 09 2013 Yottaa Inc. Systems and methods for dynamically modifying a requested web page from a server for presentation at a client
10987588, Nov 29 2016 Activision Publishing, Inc. System and method for optimizing virtual games
10991110, Dec 06 2016 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
11019173, Jun 01 2016 HOME BOX OFFICE, INC. Cached data expiration and refresh
11040286, Sep 27 2017 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
11097193, Sep 11 2019 ACTIVISION PUBLISHING, INC Methods and systems for increasing player engagement in multiplayer gaming environments
11115712, Dec 15 2018 ACTIVISION PUBLISHING, INC Systems and methods for indexing, searching for, and retrieving digital media
11117055, Dec 06 2017 ACTIVISION PUBLISHING, INC Systems and methods for validating leaderboard gaming data
11148063, Dec 22 2017 Activision Publishing, Inc. Systems and methods for providing a crowd advantage to one or more players in the course of a multi-player video game play session
11185784, Oct 08 2015 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
11189084, Jul 29 2016 Activision Publishing, Inc. Systems and methods for executing improved iterative optimization processes to personify blendshape rigs
11192028, Nov 19 2018 ACTIVISION PUBLISHING, INC Systems and methods for the real-time customization of video game content based on player data
11207596, Nov 17 2016 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
11213753, Nov 17 2016 Activision Publishing, Inc. Systems and methods for the generation of heatmaps
11224807, May 14 2015 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
11263670, Nov 19 2018 ACTIVISION PUBLISHING, INC Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
11278813, Dec 22 2017 ACTIVISION PUBLISHING, INC Systems and methods for enabling audience participation in bonus game play sessions
11297159, May 05 2008 Radware, Ltd. Extensible, asynchronous, centralized analysis and optimization of server responses to client requests
11305191, Dec 20 2018 ACTIVISION PUBLISHING, INC Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
11310346, Oct 21 2015 Activision Publishing, Inc. System and method of generating and distributing video game streams
11344808, Jun 28 2019 ACTIVISION PUBLISHING, INC Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
11351459, Aug 18 2020 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
11351466, Dec 05 2014 ACTIVISION PUBLISHING, ING.; ACTIVISION PUBLISHING, INC System and method for customizing a replay of one or more game events in a video game
11413536, Dec 22 2017 Activision Publishing, Inc. Systems and methods for managing virtual items across multiple video game environments
11420119, May 14 2015 Activision Publishing, Inc. Systems and methods for initiating conversion between bounded gameplay sessions and unbounded gameplay sessions
11420122, Dec 23 2019 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
11423556, Dec 06 2016 Activision Publishing, Inc. Methods and systems to modify two dimensional facial images in a video to generate, in real-time, facial images that appear three dimensional
11423605, Nov 01 2019 ACTIVISION PUBLISHING, INC Systems and methods for remastering a game space while maintaining the underlying game simulation
11439904, Nov 11 2020 ACTIVISION PUBLISHING, INC Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
11439909, Apr 01 2016 Activision Publishing, Inc. Systems and methods of generating and sharing social messages based on triggering events in a video game
11446582, Dec 31 2012 Activision Publishing, Inc. System and method for streaming game sessions to third party gaming consoles
11524234, Aug 18 2020 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
11524237, May 14 2015 Activision Publishing, Inc. Systems and methods for distributing the generation of nonplayer characters across networked end user devices for use in simulated NPC gameplay sessions
11537209, Dec 17 2019 ACTIVISION PUBLISHING, INC Systems and methods for guiding actors using a motion capture reference system
11563774, Dec 27 2019 Activision Publishing, Inc.; ACTIVISION PUBLISHING, INC Systems and methods for tracking and identifying phishing website authors
11573781, Aug 12 2015 Comcast Cable Communications, LLC Providing and using different update times for a resource
11666831, Dec 22 2017 Activision Publishing, Inc. Systems and methods for determining game events based on a crowd advantage of one or more players in the course of a multi-player video game play session
11679330, Dec 18 2018 ACTIVISION PUBLISHING, INC Systems and methods for generating improved non-player characters
11679333, Oct 21 2015 Activision Publishing, Inc. Methods and systems for generating a video game stream based on an obtained game log
11704703, Nov 19 2018 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
11709551, Dec 17 2019 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
11712627, Nov 08 2019 ACTIVISION PUBLISHING, INC System and method for providing conditional access to virtual gaming items
11717753, Sep 29 2020 ACTIVISION PUBLISHING, INC Methods and systems for generating modified level of detail visual assets in a video game
11724188, Sep 29 2020 ACTIVISION PUBLISHING, INC Methods and systems for selecting a level of detail visual asset during the execution of a video game
11741530, Feb 23 2017 Activision Publishing, Inc. Flexible online pre-ordering system for media
11794104, Nov 11 2020 Activision Publishing, Inc. Systems and methods for pivoting player-controlled avatars in video games
11794107, Dec 30 2020 ACTIVISION PUBLISHING, INC Systems and methods for improved collision detection in video games
11806626, Dec 22 2017 Activision Publishing, Inc. Systems and methods for incentivizing player participation in bonus game play sessions
11833423, Sep 29 2020 ACTIVISION PUBLISHING, INC Methods and systems for generating level of detail visual assets in a video game
11839814, Dec 23 2019 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
11853439, Dec 30 2020 ACTIVISION PUBLISHING, INC Distributed data storage system providing enhanced security
11857876, May 14 2015 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
11883745, Nov 19 2018 Activision Publishing, Inc. Systems and methods for providing a tailored video game based on a player defined time period
11896905, May 14 2015 Activision Publishing, Inc. Methods and systems for continuing to execute a simulation after processing resources go offline
11900101, Aug 12 2015 Comcast Cable Communications, LLC Providing and using different update times for a resource
11911689, Dec 19 2017 Activision Publishing, Inc. Synchronized, fully programmable game controllers
6920605, Apr 01 1999 International Business Machines Corporation Method and system for rapid publishing and censoring information
6976057, Dec 27 1999 LENOVO INNOVATIONS LIMITED HONG KONG Content acquiring device, method, and system using valid terms to keep a cache up-to-date
7032173, Jun 16 2000 Microsoft Technology Licensing, LLC Automatic republication of data
7039723, Aug 31 2001 Canon Medical Systems Corporation On-line image processing and communication system
7085878, Sep 25 2001 Intel Corporation Transportation of main memory and intermediate memory contents
7243136, Jan 18 2000 R2 SOLUTIONS LLC Approach for managing and providing content to users
7251676, Dec 22 2000 Siemens Healthcare GmbH Method for handling an information item
7293027, Feb 26 2003 Red Hat, Inc Method for protecting history in a file system
7318072, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7363326, Feb 26 2003 Red Hat, Inc Archive with timestamps and deletion management
7467144, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7478096, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7496555, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7571106, Apr 09 2007 TAMIRAS PER PTE LTD , LLC Methods and apparatus for freshness and completeness of information
7590704, Jan 20 2004 Microsoft Technology Licensing, LLC Systems and methods for processing dynamic content
7681116, Jun 16 2000 Microsoft Technology Licensing, LLC Automatic republication of data
7734595, Feb 26 2003 Red Hat, Inc Communicating information between clients of a data repository that have deposited identical data items
7747583, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7809610, Apr 09 2007 TAMIRAS PER PTE LTD , LLC Methods and apparatus for freshness and completeness of information
7870104, Feb 07 2005 Hitachi, Ltd. Storage system and storage device archive control method
7912855, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7930315, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7937435, Feb 21 2006 RADWARE CANADA HOLDINGS INC Identifying, storing, and retrieving context data for a network message
7979397, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
7987197, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
8000259, Sep 04 2009 Viasat, Inc Distributed cache—adaptive multicast architecture for bandwidth reduction
8010627, Sep 25 1998 SPRINT COMMUNICATIONS COMPANY, L P Virtual content publishing system
8037127, Feb 21 2006 RADWARE CANADA HOLDINGS INC In-line network device for storing application-layer data, processing instructions, and/or rule sets
8055628, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
8082327, Apr 02 2007 Binu Pty Ltd Systems methods and apparatuses for providing applications style functionality to a user
8082328, Sep 17 1999 Ricoh Co., Ltd. Method and apparatus for publishing documents over a network
8095494, Oct 16 2008 International Business Machines Corporation Rules-based cross-FSM transition triggering
8095516, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
8149761, Aug 29 2006 Viasat, Inc Incrementally increasing deployment of gateways
8166114, Feb 21 2006 RADWARE CANADA HOLDINGS INC Asynchronous context data messaging
8180720, Jul 19 2007 AKAMAI TECHNOLOGIES, INC Content delivery network (CDN) cold content handling
8326949, Apr 02 2007 Binu Pty Ltd Systems, methods and apparatuses for providing applications style functionality to a user
8411798, Nov 05 2008 Viasat, Inc Reducing receiver power dissipation
8412536, Apr 09 2007 TAMIRAS PER PTE LTD , LLC Methods and apparatus for freshness and completeness of information
8458126, Apr 15 2004 CITICORP CREDIT SERVICES, INC USA Methods and systems for updating web pages via a web data instant update utility
8493881, Sep 04 2009 ViaSat, Inc. Distributed cache—adaptive multicast architecture for bandwidth reduction
8510400, Feb 21 2006 RADWARE CANADA HOLDINGS INC Asynchronous context data messaging
8533313, Oct 01 2008 Binu Pty Ltd Systems, methods, and computer readable media for providing applications style functionality to a user
8538328, Sep 11 2008 Viasat, Inc Antenna and satellite alignment using beam projections
8612585, Feb 21 2006 RADWARE CANADA HOLDINGS INC In-line network device for storing application-layer data, processing instructions, and/or rule sets
8634768, Aug 29 2006 Viasat, Inc Redundant communication path for satellite communication data
8660142, Sep 25 2008 Viasat, Inc Scheduling virtual bandwidth requests
8694734, Jan 31 2009 KYNDRYL, INC Expiring virtual content from a cache in a virtual universe
8700493, Apr 09 2007 TAMIRAS PER PTE LTD , LLC Methods and apparatus for freshness and completeness of information
8711758, Aug 29 2006 Viasat, Inc Incrementally increasing deployment of gateways
8725836, Feb 07 2000 Microsoft Corporation Method and apparatus for content synchronization
8730086, Aug 26 2008 Viasat, Inc Weather detection using satellite communication signals
8756342, Feb 07 2000 Microsoft Corporation Method and apparatus for content synchronization
9002988, Apr 02 2007 Binu Pty Ltd Systems, methods and apparatuses for providing applications style functionality to a user
9069732, Dec 29 2011 CHEGG, INC Automated document conversion testing
9091763, Aug 26 2008 Viasat, Inc Weather detection using satellite communication signals
9100404, Oct 01 2008 Binu Pty Ltd Systems, methods, and computer readable media for providing applications style functionality to a user
9104716, Feb 26 2003 Red Hat, Inc History preservation in a computer storage system
9130889, Sep 04 2009 Viasat, Inc Distributed cache—adaptive multicast architecture for bandwidth reduction
9292467, Sep 16 2011 RADWARE CANADA HOLDINGS INC Mobile resource accelerator
9344491, Oct 01 2008 Binu Pty Ltd Systems, methods, and computer readable media for providing applications style functionality to a user
9542501, Jan 28 2011 RADWARE CANADA HOLDINGS INC System and method for presenting content in a client/server environment
9542538, Oct 04 2011 Chegg, Inc. Electronic content management and delivery platform
9549039, May 28 2010 RADWARE CANADA HOLDINGS INC Accelerating HTTP responses in a client/server environment
9569410, Aug 13 2012 Chegg, Inc. Multilayered document distribution in multiscreen systems
9674256, Oct 01 2008 Binu Pty Ltd Systems, methods, and computer readable media for providing applications style functionality to a user
9792108, Aug 12 2015 Comcast Cable Communications, LLC Scheme for managing last-modified information
9906620, May 05 2008 RADWARE CANADA HOLDINGS INC Extensible, asynchronous, centralized analysis and optimization of server responses to client requests
9934161, Jan 31 2009 KYNDRYL, INC Expiring virtual content from a cache in a virtual universe
RE42952, Nov 05 1999 Vital Images, Inc. Teleradiology systems for rendering and visualizing remotely-located volume data sets
RE44336, Nov 05 1999 Vital Images, Inc. Teleradiology systems for rendering and visualizing remotely-located volume data sets
Patent Priority Assignee Title
5506902, Apr 20 1993 Sony Corporation Data broadcasting system
5734898, Jun 24 1994 IBM Corporation Client-server computer system and method for updating the client, server, and objects
5933849, Apr 10 1997 AT&T Properties, LLC; AT&T INTELLECTUAL PROPERTY II, L P Scalable distributed caching system and method
6006034, Sep 05 1996 FLEXERA SOFTWARE, INC Systems and methods for automatic application version upgrading and maintenance
6098093, Mar 19 1998 International Business Machines Corp. Maintaining sessions in a clustered server environment
6138152, Jun 02 1998 THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT Technique for effectively serving information objects through a communication network
6148299, Jun 14 1996 Canon Kabushiki Kaisha Selectively processing plurality of transactions using transaction identifiers that including committing, aborting updating and continuous updating content in a plurality of shared data
6154811, Apr 10 1997 AT&T Properties, LLC; AT&T INTELLECTUAL PROPERTY II, L P Scalable network object caching
6170013, Mar 27 1998 RPX CLEARINGHOUSE LLC Method and apparatus for controlling access to network information sources
6182077, Aug 19 1994 Fujitsu Limited Method and apparatus for confirming matching of data in a distributed processing system
6205481, Mar 17 1998 ARRAY NETWORKS, INC Protocol for distributing fresh content among networked cache servers
6219675, Jun 05 1997 Microsoft Technology Licensing, LLC Distribution of a centralized database
6219676, Aug 06 1999 RPX Corporation Methodology for cache coherency of web server data
6292835, Nov 26 1997 IBM Corporation Network bandwidth and object obsolescence sensitive scheduling method and apparatus for objects distributed broadcasting
6321236, May 27 1997 PURE DATA SYSTEMS, LLC Distributing database differences corresponding to database change events made to a database table located on a server computer
////////////
Executed onAssignorAssigneeConveyanceFrameReelDoc
Aug 20 1999International Business Machines Corporation(assignment on the face of the patent)
Sep 10 1999IYENGAR, ARUN KWANGILInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0103610113 pdf
Sep 10 1999CHALLENGER, JAMES ROBERT HAROLDInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0103610113 pdf
Sep 10 1999WITTING, KAREN A International Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0103610113 pdf
Oct 08 1999FERSTAT, CAMERON DONALDInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0103610113 pdf
Oct 27 1999REED, PAULInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0103610113 pdf
Dec 31 2012International Business Machines CorporationACTIVISION PUBLISHING, INC ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0299000285 pdf
Jan 31 2014ACTIVISION PUBLISHING, INC BANK OF AMERICA, N A SECURITY AGREEMENT0322400257 pdf
Oct 14 2016BANK OF AMERICA, N A ACTIVISION ENTERTAINMENT HOLDINGS, INC RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS 0403810487 pdf
Oct 14 2016BANK OF AMERICA, N A BLIZZARD ENTERTAINMENT, INC RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS 0403810487 pdf
Oct 14 2016BANK OF AMERICA, N A ACTIVISION PUBLISHING, INC RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS 0403810487 pdf
Oct 14 2016BANK OF AMERICA, N A ACTIVISION BLIZZARD INC RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS 0403810487 pdf
Date Maintenance Fee Events
Sep 04 2003ASPN: Payor Number Assigned.
Nov 20 2006M1551: Payment of Maintenance Fee, 4th Year, Large Entity.
Jan 29 2011M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Mar 09 2015M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Sep 09 20064 years fee payment window open
Mar 09 20076 months grace period start (w surcharge)
Sep 09 2007patent expiry (for year 4)
Sep 09 20092 years to revive unintentionally abandoned end. (for year 4)
Sep 09 20108 years fee payment window open
Mar 09 20116 months grace period start (w surcharge)
Sep 09 2011patent expiry (for year 8)
Sep 09 20132 years to revive unintentionally abandoned end. (for year 8)
Sep 09 201412 years fee payment window open
Mar 09 20156 months grace period start (w surcharge)
Sep 09 2015patent expiry (for year 12)
Sep 09 20172 years to revive unintentionally abandoned end. (for year 12)