System and method for performing flash crowd caching of dynamically generated objects in a data communication network
First Claim
1. In a network device, a method for responding to a request for a dynamically generated object from a plurality of clients, the method comprising the steps of:
- receiving, by a cache manager operating on a network device, from a first client a first request for a dynamically generated object from an originating server;
transmitting, by the cache manager, the first request to the originating server;
receiving, by the cache manager, the response to the first request from the originating server, the response comprising the dynamically generated object;
initiating transmission, by the cache manager, of the dynamically generated object to the first client in response to the first request, the dynamically generated object stored in a transmission buffer of a network stack of the network device while waiting to be transmitted;
receiving, by the cache manager, from a second client a second request for the dynamically generated object prior to completing transmission of the response to the first request of the first client;
determining, by the cache manager, that the dynamically generated object is currently in the transmission buffer of the network stack of the network device;
transmitting, by the cache manager and responsive to the determination that the dynamically generated object is currently in the transmission buffer, the dynamically generated object to the second client from the transmission buffer in response to the second request; and
flushing, by the cache manager, the dynamically generated object from the transmission buffer, responsive to completion of transmission of the dynamically generated object to the first client and the second client.
7 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed towards a “flash crowd” technique for handling situations where the cache receives additional requests, e.g.,. nearly simultaneous requests, for the same object during the time the server is processing and returning the response object for a first requester. Once all such nearly simultaneous requests are responded to by the cache, the object is flushed from the cache, with no additional expire time or invalidation action needed. This technique of the present invention enables data to be cached and served for very small amounts of time for objects that would otherwise be considered non-cacheable. As such, this technique yields a significant improvement in applications that serve fast changing data to a large volume of concurrent users, such, for example, as real time stock quotes, or a fast evolving news story.
434 Citations
19 Claims
-
1. In a network device, a method for responding to a request for a dynamically generated object from a plurality of clients, the method comprising the steps of:
-
receiving, by a cache manager operating on a network device, from a first client a first request for a dynamically generated object from an originating server; transmitting, by the cache manager, the first request to the originating server; receiving, by the cache manager, the response to the first request from the originating server, the response comprising the dynamically generated object; initiating transmission, by the cache manager, of the dynamically generated object to the first client in response to the first request, the dynamically generated object stored in a transmission buffer of a network stack of the network device while waiting to be transmitted; receiving, by the cache manager, from a second client a second request for the dynamically generated object prior to completing transmission of the response to the first request of the first client; determining, by the cache manager, that the dynamically generated object is currently in the transmission buffer of the network stack of the network device; transmitting, by the cache manager and responsive to the determination that the dynamically generated object is currently in the transmission buffer, the dynamically generated object to the second client from the transmission buffer in response to the second request; and flushing, by the cache manager, the dynamically generated object from the transmission buffer, responsive to completion of transmission of the dynamically generated object to the first client and the second client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 18)
-
-
9. A network device for responding to a request for a dynamically generated object from a plurality of clients, the network device comprising:
-
means for receiving, by a cache manager operating on a network device, from a first client a first request for a dynamically generated object from an originating server; means for transmitting, by the cache manager, the first request to the originating server; means for receiving, by the cache manager, the response to the first request from the originating server, the response comprising the dynamically generated object; means for initiating transmission, by the cache manager, of the dynamically generated object to the first client in response to the first request, the dynamically generated object stored in a transmission buffer of a network stack of the network device while waiting to be transmitted; means for receiving, by the cache manager, from a second client a second request for the dynamically generated object prior to completing transmission of the response to the first request of the first client; means for determining, by the cache manager, that the dynamically generated object is currently in the transmission buffer of the network stack of the network device; means for transmitting, by the cache manager and responsive to the determination that the dynamically generated object is currently in the transmission buffer, the dynamically generated object to the second client from the transmission buffer in response to the second request; and means for flushing, by the cache manager, the dynamically generated object from the transmission buffer, upon and responsive to completion of transmission of the dynamically generated object to the first client and the second client. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
19. In a network device, a method for responding to a request for a dynamically generated object from a plurality of clients, the method comprising:
-
receiving from a first client, by a network device deployed as an intermediary between a plurality of clients and at least one server, a first request for a dynamically generated object from an originating server; forwarding, by the network device, the first request to the originating server, responsive to a response to the first request not existing in a cache of the network device or transmission buffer of a network stack of the network device; receiving, by the network device, the response to the first request from the originating server, the response comprising the dynamically generated object; queuing, by the network device, the dynamically generated object for transmission in the transmission buffer of the network stack, the transmission buffer provided by a packet processing engine of the network device; initiating transmission of the dynamically generated object to the first client from the transmission buffer of the network stack in response to the first request; receiving from a second client, by the network device, a second request for the dynamically generated object, prior to completing transmission of the response to the first request of the first client; determining, by the network device, that the dynamically generated object is currently in the transmission buffer used for the first response; and transmitting, by the network device in response to the second request, the dynamically generated object to the second client from the same transmission buffer used for the first response.
-
Specification