A network acceleration device simultaneously caches and intelligently serves different historical versions of stored network content. For example, the network acceleration device may receive one or more requests for original content; however, subsequent updates to the content may create varying versions of the content, e.g., a pre-update version and one or more post-update versions. Client devices that requested the content prior to the update receive the pre-update version from the network acceleration device. Client devices that requested content after the update receive the post-update version from the network device. Moreover, the network acceleration device facilitates the simultaneous delivery of the pre-update version and the post-update version without waiting for delivery of the pre-update version to be complete. Thus, the network acceleration device may facilitate decreased download times by seamlessly and transparently providing both versions of the content simultaneously.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method comprising: storing a first version of content to a cache within an intermediate network device located between a first client device and a network server from which the content was obtained; receiving a request for the first version of the content; in response to the request, modifying the cache to include a token that references the first version of the content, wherein the token indicates that the first version of the content is not to be removed from the cache; reading the first version of the content from the cache based on the token; after reading the first version of the content from the cache, transmitting the first version of the content from the intermediate network device to the first client device; receiving a request with the intermediate network device for the content; determining whether a newer version of the content exists on a network server in response to the request; while transmitting the first version of the content, downloading a second version of the content with the intermediate network device from the network server based on the determination that the second version of the content is the newer version of the first version of the content; storing the second version the content with the intermediate network device to the cache while transmitting the first version of the content, wherein the first version of the content is a historical version of the second version of the content in that the second version of the content is a content update for the first version of the content; and transmitting the second version of the content from the intermediate network device to a second client device at least partially in parallel with the transmission of the first version from the intermediate network device to the first client device.
2. The method of claim 1 , further comprising: removing the token upon finishing the transmission of the first version of the content; determining whether to remove the first version of the content from the cache based on the number of tokens currently referencing the first version of the content; removing the first version of the content from the cache based on the determination that no tokens currently reference the first version of the content; and retaining the first version of the content in the cache based on the determination that one or more tokens currently reference the first version of the content.
3. The method of claim 2 , wherein determining whether to remove the first version further comprises determining whether to remove the first version of the content based on the availability of newer versions of the content within the cache, and wherein removing the first version of the content further comprises removing the first version of the content based on the determination that the second version comprises a newer version of the content.
4. The method of claim 1 , wherein storing the second version of the content comprises: receiving a token from the cache that references a storage location within the cache; storing the second version of the content to the cache based on the token while transmitting the first version of the content.
5. The method of claim 4 , further comprising: removing the token after storing the second version of the content to the cache; reorganizing the second version of the content within the cache by moving objects that reference the second version of the content to a relative location before objects that reference the first version of the content after storing the second version of the content to the cache.
6. The method of claim 4 , wherein receiving the token comprises receiving a token from the cache after issuing a query to the cache requesting to write the second version of the content to the cache.
7. The method of claim 1 , wherein storing the first version of content to the cache comprises storing the first version of the content to an in-memory cache, and wherein storing a second version of the content to the cache comprises storing the second version of the content to the in-memory cache.
8. The method of claim 1 , wherein storing the first of the content comprises storing a first version of the content in a natural format and one or more encoded formats within the cache of the intermediate device, wherein the request specifies one or more of the encoded formats that are acceptable to the client device, wherein the method further comprises selecting, with the intermediate device, either the natural format or one of the encoded formats of the content from the cache based on the one or more encoded formats the request specifies as acceptable, and wherein transmitting the first version of the content comprises transmitting the first version of the content in the selected format to the client device.
9. The method of claim 8 , wherein selecting either the natural format or one of the encoded formats of the first version of the content from the cache comprises issuing a cache access request in accordance with a cache storage application programming interface (API) to determine whether the requested first version of the content resides within the cache.
10. The method of claim 9 , wherein selecting either the natural format or one of the encoded formats of the first version of the content from the cache comprises: forming a query based on the cache access request; issuing the query to the cache; and receiving a response from the cache based on the query that indicates whether the requested content resides in the cache.
11. The method of claim 10 , further comprising: downloading the requested content from the network server when the requested content does not reside within the cache; automatically encoding the downloaded requested content to one of the acceptable encodings; and storing the recently encoded content to the cache, wherein transmitting the first version of the content comprises transmitting one of the acceptable encodings of the first version of the content to the client device simultaneous with storing the acceptable encodings of the first version of the content to the cache.
12. The method of claim 8 , further comprising storing other content within an intermediate device by storing complete content as the natural format and reduced content for display-limited devices as one of the encoded formats.
13. An intermediate network device comprising: a cache that stores a first version and a second version of content obtained by the intermediate network device from one or more network servers, wherein the first version and the second version are historical versions representing updates to the content in that the second version of the content is a content update for the first version of the content; a cache engine that maintains the cache; a first cache client executing within the network device that transmits the first version of the content to a first client device; and a second cache client executing within the network device that receives a request for the content, determining whether a newer version of the content exists on one of the network servers in response to the request, downloads the second version from the network server based on the determination that the second version of the content is the newer version of the first version of the content, stores the second version the content and transmits the second version of the content to a second client device, wherein the cache stores the second version of the content while the first cache client transmits the first version of content to the first client device, wherein transmission of the first version and the second version occur at least partially in parallel, and wherein the first cache client receives a request for the first version of the content prior to transmitting the first version of the content, directs the cache engine, in response to the request, to allocate a token that references the first version of the content within the cache and indicates that the first version of the content is not to be removed from the cache, and reads the first version of the content from the cache.
14. The intermediate network device of claim 13 , wherein the first cache client further receives a request for the first version of the content prior to transmitting the first version of the content, allocates a token that references the first version of the content within the cache from the cache daemon in response to the request, and reads the first version of the content from the cache, wherein the cache engine maintains the cache by removing the token upon finishing the transmission of the first version of the content, and wherein the cache removes the first version of the content from the cache when no tokens currently reference the first version of the content.
15. The intermediate network device of claim 14 , wherein the cache determines whether to remove the first version by determining whether to remove the first version of the content based on the availability of newer versions of the content within the cache, and wherein the cache removes the first version of the content by further removing the first version of the content based on the determination that the second version comprises a newer version of the content.
16. The intermediate network device of claim 14 , wherein the cache further retains the first version of the content based on the determination that one or more tokens currently reference the first version of the content.
17. The intermediate network device of claim 13 , wherein the second cache further receives a token from the cache that references unused memory within the cache; and stores the second version of the content to the cache based on the token while transmitting the first version of the content.
18. The intermediate network device of claim 17 , wherein the cache further removes the token after storing the second version of the content to the cache and reorganizes the second version of the content within the cache by moving objects that reference the second version of the content to a place before objects that reference the first version of the content after storing the second version of the content to the cache.
19. The intermediate network device of claim 17 , wherein the cache engine further issues a query to the cache requesting to write the second version of the content to the cache, and wherein the cache client receives the token by receiving a token from the cache after the cache engine issues a query to the cache requesting to write the second version of the content to the cache.
20. The intermediate network device of claim 13 , wherein the cache comprises an in-memory cache having at least a portion of the cache stored in a named physical memory region that can be remapped to virtual memory space of the cache engine after a fault.
21. The intermediate network device of claim 13 , wherein the cache stores a first version of the content in a natural format and one or more encoded formats, wherein the first cache client receives a request that specifies one or more of the encoded formats that are acceptable to the first client device, selects either the natural format or one of the encoded formats of the content from the cache based on the one or more encoded formats the request specifies as acceptable, and transmits the first version of the content in the selected format to the client device.
22. The intermediate network device of claim 21 , wherein the first cache client further issues a cache access request in accordance with a cache storage application programming interface (API) to determine whether the requested first version of the content resides within the cache.
23. The intermediate network device of claim 22 , wherein the first cache client further forms a query based on the cache access request, issues the query to the cache, and receives a response from the cache based on the query that indicates whether the requested content resides in the cache.
24. The intermediate network device of claim 23 , wherein the first cache client further downloads the requested content from the network server when the requested content does not reside within the cache, automatically encodes the downloaded requested content to one of the acceptable encodings, and stores the recently encoded content to the cache, and transmits one of the acceptable encodings of the first version of the content to the client device simultaneous with storing the acceptable encodings of the first version of the content to the cache.
25. The intermediate network device of claim 21 , wherein the first cache client stores other content by storing complete content as the natural format and reduced content for display-limited devices as one of the encoded formats.
26. A non-transitory computer-readable medium comprising instructions for causing a programmable processor to: store a first version of content in a natural format and one or more encoded formats to a cache within an intermediate network device located between a client and a server; receive a request for the first version of the content, wherein the request specifies one or more of the encoded formats that are acceptable to the client device; selecting either the natural format or one of the encoded formats of the content from the cache based on the one or more encoded formats the request specifies as acceptable; in response to the request, modify the cache to include a token that references the first version of the content; read the first version of the content from the cache based on the token; after reading the first version of the content from the cache, transmit the selected format of the first version of the content to a client device; receive a request with the intermediate network device for the content; determine whether a newer version of the content exists on a network server in response to the request; while transmitting the first version of the content, download a second version of the content with the intermediate network device from the network server based on the determination that the second version of the content is the newer version of the first version of the content; store the second version the content with the intermediate network device to the cache while transmitting the first version of the content, wherein the second version of the content is a content update for the first version of the content; and transmit at least a portion of the second version from the intermediate device to a second client device in parallel with the transmission of the first version from the intermediate device to the first client device.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
January 4, 2010
December 13, 2011
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.