Byte range caching
First Claim
1. A computer-implemented method for responding to client requests at a cache server for portions of a content resource, the method comprising:
- receiving at a cache server a first request for a first range of bytes that represents a portion of a content resource stored on an origin server;
identifying one or more chunks that the requested first range of bytes overlaps based on a chunk size into which the cache server divides the content resource, the chunk size being configurable based on the cache server receiving a request to modify the chunk size;
determining whether each overlapped chunk is currently stored in a cache of the cache server;
upon determining that at least one overlapped chunk is not currently stored in the cache of the cache server,generating, by the cache server, a second request that remaps the first range of bytes to a second range of bytes that is aligned with the configurable chunk size, the second range of bytes being different than the first range of bytes;
sending the second request to the origin server to download the overlapped chunks that are not stored in the cache;
receiving a response from the origin server that contains a byte range that includes the requested overlapped chunks;
storing the received byte range in corresponding chunks in the cache; and
sending a response to the received first request that includes the specified range of bytes retrieved from the cache,the preceding steps being performed by at least one processor.
2 Assignments
0 Petitions
Accused Products
Abstract
A caching system segments content into multiple, individually cacheable chunks cached by a cache server that caches partial content and serves byte range requests with low latency and fewer duplicate requests to an origin server. The system receives a request from a client for a byte range of a content resource. The system determines the chunks overlapped by the specified byte range and sends a byte range request to the origin server for the overlapped chunks not already stored in a cache. The system stores the bytes of received responses as chunks in the cache and responds to the received request using the chunks stored in the cache. The system serves subsequent requests that overlap with previously requested ranges of bytes from the already retrieved chunks in the cache and makes requests to the origin server only for those chunks that a client has not previously requested.
-
Citations
20 Claims
-
1. A computer-implemented method for responding to client requests at a cache server for portions of a content resource, the method comprising:
-
receiving at a cache server a first request for a first range of bytes that represents a portion of a content resource stored on an origin server; identifying one or more chunks that the requested first range of bytes overlaps based on a chunk size into which the cache server divides the content resource, the chunk size being configurable based on the cache server receiving a request to modify the chunk size; determining whether each overlapped chunk is currently stored in a cache of the cache server; upon determining that at least one overlapped chunk is not currently stored in the cache of the cache server, generating, by the cache server, a second request that remaps the first range of bytes to a second range of bytes that is aligned with the configurable chunk size, the second range of bytes being different than the first range of bytes; sending the second request to the origin server to download the overlapped chunks that are not stored in the cache; receiving a response from the origin server that contains a byte range that includes the requested overlapped chunks; storing the received byte range in corresponding chunks in the cache; and sending a response to the received first request that includes the specified range of bytes retrieved from the cache, the preceding steps being performed by at least one processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer system for caching chunks of a content resource at a cache server to respond to client requests for portions of the resource, the system comprising:
-
a processor; and a memory that stores instructions, which, when executed by the processor, cause the processor to perform a method, the method comprising; receiving first requests from clients to download a portion of the content resource from the cache server, each of the first requests specifying a first byte range that represents the portion of the content resource; storing cache chunks received from an origin server in a cache store at the cache server in response to a chunk request, the chunk size being determined by the cache server; generating, by the cache server, second requests that remap the first byte ranges specified by the first requests to second byte ranges that are aligned with the chunk size, the second byte ranges being different than the first byte ranges; sending the second requests from the cache server to the origin server for chunks requested by clients that are not stored in the cache store; storing chunk request responses from the origin server in the cache store of the cache server; and mapping the chunks available in the cache store to the first byte ranges specified by the first requests. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable storage device comprising instructions for controlling a computer system to configure a cache at a cache server that caches chunks of a content resource originally provided by an origin server, the instructions, when executed, causing a processor to perform actions comprising:
-
receiving a request at the cache server to set a chunk size that specifies an upper boundary on the size of a chunk of the content resource that will be cached by the cache server, the request being generated based on user input submitted via a user interface; determining a previously set chunk size; determining whether the request specifies purging existing chunks of the content resource in the cache; upon determining that the request specifies purging existing chunks of the content resource in the cache, deleting the existing chunks of the content resource from the cache; upon determining that the request does not specify deleting existing chunks of the content resource from the cache, changing a size of the existing chunks of the content resource in the cache to the requested chunk size; receiving a first byte range request specifying a first range of bytes representing a portion of the content resource; and generating a second byte range request that remaps the first range of bytes to a second range of bytes that is aligned with the requested chunk size, the second range of bytes being different than the first range of bytes.
-
Specification