SYSTEMS AND METHODS FOR CONTROLLING CACHEABILITY AND PRIVACY OF OBJECTS
First Claim
1. A computer-implemented method operable in a server, comprising:
- receiving a first request from a client device, the first request being directed to a URL;
in response to the first request, generating a forward request to a remote source;
receiving a response to the forward request from the remote source, the response comprising particular content and a token, the token indicating that content received in response to requests made to the URL can be served to one or more other client devices;
storing the particular content in a local cache;
storing the URL or value derived therefrom in a local data structure;
receiving a request from a second client device, the second request being directed to the URL;
in response to the request from the second client device, identifying in the local data structure the URL or the value derived therefrom, and based at least in part on that identification, serving the particular content in the local cache to serve to the second client device.
1 Assignment
0 Petitions
Accused Products
Abstract
Described herein are systems, devices, and methods for content delivery on the Internet. In certain non-limiting embodiments, a caching model is provided that can support caching for indefinite time periods, potentially with infinite or relatively long time-to-live values, yet provide prompt updates when the underlying origin content changes. Origin-generated tokens can drive the process of caching, and can be used as handles for later invalidating origin responses within caching proxy servers delivering the content. Tokens can also be used to control object caching behavior at a server, and in particular to control how an object is indexed in cache and who it may be served to. Tokens may indicate, for example, that responses to certain requested URL paths are public, or may be used to map user-id in a client request to a group for purposes of locating valid cache entries in response to subsequent client requests.
57 Citations
16 Claims
-
1. A computer-implemented method operable in a server, comprising:
-
receiving a first request from a client device, the first request being directed to a URL; in response to the first request, generating a forward request to a remote source; receiving a response to the forward request from the remote source, the response comprising particular content and a token, the token indicating that content received in response to requests made to the URL can be served to one or more other client devices; storing the particular content in a local cache; storing the URL or value derived therefrom in a local data structure; receiving a request from a second client device, the second request being directed to the URL; in response to the request from the second client device, identifying in the local data structure the URL or the value derived therefrom, and based at least in part on that identification, serving the particular content in the local cache to serve to the second client device. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. An apparatus, comprising:
-
a hardware processor; computer memory storing computer program instructions executed by the one or more hardware processors, the computer program instructions comprising; program code to receive a first request from a client device, the first request being directed to a URL; program code to, in response to the first request, generate a forward request to a remote source; program code to receive a response to the forward request from the remote source, the response comprising particular content and a token, the token indicating that content received in response to requests made to the URL can be served to one or more other client devices; program code to store the particular content in a local cache; program code to store the URL or value derived therefrom in a local data structure; program code to receive a request from a second client device, the second request being directed to the URL; program code to, in response to the request from the second client device, identify in the local data structure the URL or the value derived therefrom, and based at least in part on that identification, serve the particular content in the local cache to serve to the second client device.
-
-
8. A computer-implemented method operable in a server, comprising:
-
receiving a first request from a client device, the first request being directed to a URL, the request including an identifier associated with the client device or user thereof; in response to the first request, generating a forward request to a remote source; receiving a response to the forward request from the remote source, the response comprising content and a token, the token indicating that the identifier should not be used in calculating a cache key for the content; storing the content in a local cache, wherein said storing comprises calculating a cache key for the content without reference to the identifier; receiving a second request from a second client device, the second request being directed to the URL; identifying the content in the local cache as responsive to the request, based at least in part on the cache key; serving the content to the second client from the local cache. - View Dependent Claims (9, 10, 11)
-
-
12. An apparatus, comprising:
-
a hardware processor; computer memory storing computer program instructions executed by the one or more hardware processors, the computer program instructions comprising; program code to receive a first request from a client device, the first request being directed to a URL, the request including an identifier associated with the client device or user thereof; program code to, in response to the first request, generate a forward request to a remote source; program code to receive a response to the forward request from the remote source, the response comprising content and a token, the token indicating that the identifier should not be used in calculating a cache key for the content; program code to store the content in a local cache, wherein said storing comprises calculating a cache key for the content without reference to the identifier; program code to receive a second request from a second client device, the second request being directed to the URL; program code to identify the content in the local cache as responsive to the request, based at least in part on the cache key; program code to serve the content to the second client from the local cache.
-
-
13. A computer-implemented method operable in a server, comprising:
-
receiving a request from a client device, the first request including a user identifier and being directed to a URL; in response to the request from the client device, generating a forward request to a remote source; receiving a response to the forward request from the remote source, the response comprising a token that indicates that the user identifier is associated with a group identifier; storing the association between the user identifier and the group identifier in a local data structure; in response to the request from the client device or a subsequent request from the client device, retrieving content from a local cache that is stored under a cache-key calculated based on the group-identifier; serving the content to the client device. - View Dependent Claims (14, 15)
-
-
16. An apparatus, comprising:
-
a hardware processor; computer memory storing computer program instructions executed by the one or more hardware processors, the computer program instructions comprising; program code to receive a request from a client device, the first request including a user identifier and being directed to a URL; program code to, in response to the request from the client device, generate a forward request to a remote source; program code to receive a response to the forward request from the remote source, the response comprising a token that indicates that the user identifier is associated with a group identifier; program code to store the association between the user identifier and the group identifier in a local data structure; program code to, in response to the request from the client device or a subsequent request from the client device, retrieve content from a local cache that is stored under a cache-key calculated based on the group-identifier; program code to serve the content to the client device.
-
Specification