Distributed caching system with subscription based notification of cache invalidations
First Claim
1. A method performed by a distributed system comprising a plurality of servers including a first, a second and a third server operable to communicate over one or more computer networks, the method comprising:
- at the first server;
receiving a request for particular content from one of a plurality of clients, the request comprising a domain name;
sending the request for particular content to the third server;
in response to the request, receiving a message that comprises the particular content and one or more tokens distinct from the particular content;
storing the particular content in a local cache of the first server in association with the one or more tokens;
sending a subscription request to the third server, the subscription request comprising a request to receive invalidation messages for tokens associated with the domain name over a subscription channel associated with the domain name;
at the second server;
receiving a write request from any of a same and another one of the plurality of clients, the write request comprising the domain name;
sending the write request to the third server;
receiving a response to the write request from the third server;
at the third server;
sending the response to the write request to the second server;
determining that the response to the write request is associated with a particular token;
upon said determination, sending an invalidation message for the particular token to the first server, the invalidation message sent over the subscription channel for the domain name;
at the first server;
receiving the invalidation message for the particular token from the third server, and upon said receipt, determining that the particular token is one of the one or more tokens associated with the particular content, and based at least in part upon said determination, marking the particular content stored in the local cache as invalid;
wherein each of the first, second, and third servers comprise at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor to perform the method as specified above.
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. In one approach, an origin server can annotate its responses to content requests with tokens, e.g., placing them in an appended HTTP header or otherwise. The tokens can drive the process of caching, and can be used as handles for later invalidating the responses within caching proxy servers delivering the content. Tokens may be used to represent a variety of kinds of dependencies expressed in the response, including without limitation data, data ranges, or logic that was a basis for the construction of the response.
-
Citations
12 Claims
-
1. A method performed by a distributed system comprising a plurality of servers including a first, a second and a third server operable to communicate over one or more computer networks, the method comprising:
-
at the first server; receiving a request for particular content from one of a plurality of clients, the request comprising a domain name; sending the request for particular content to the third server; in response to the request, receiving a message that comprises the particular content and one or more tokens distinct from the particular content; storing the particular content in a local cache of the first server in association with the one or more tokens; sending a subscription request to the third server, the subscription request comprising a request to receive invalidation messages for tokens associated with the domain name over a subscription channel associated with the domain name; at the second server; receiving a write request from any of a same and another one of the plurality of clients, the write request comprising the domain name; sending the write request to the third server; receiving a response to the write request from the third server; at the third server; sending the response to the write request to the second server; determining that the response to the write request is associated with a particular token; upon said determination, sending an invalidation message for the particular token to the first server, the invalidation message sent over the subscription channel for the domain name; at the first server; receiving the invalidation message for the particular token from the third server, and upon said receipt, determining that the particular token is one of the one or more tokens associated with the particular content, and based at least in part upon said determination, marking the particular content stored in the local cache as invalid; wherein each of the first, second, and third servers comprise at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor to perform the method as specified above. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method performed by a distributed system comprising a plurality of servers including a first, a second and a third server operable to communicate over one or more computer networks, the method comprising:
-
at the first server; receiving a request for particular content from one of a plurality of clients, the request comprising a domain name; sending the request for particular content to an origin server; in response to the request, receiving a message comprising the particular content and one or more tokens distinct from the particular content; storing the particular content in a local cache of the first server in association with one or more tokens; sending a subscription request to the origin server, the subscription request comprising a request to receive invalidation messages for tokens associated with the domain name over a subscription channel associated with the domain name; at the second server; receiving a write request from any of a same and another one of the plurality of clients, the write request comprising the domain name; sending the write request to the origin server; receiving a response to the write request from the origin server; determining that the response to the write request includes a particular token; upon said determination, sending a first invalidation message for the particular token to a third server; at the third server; receiving the first invalidation message and upon said receipt, sending to the first server a second invalidation message for the particular token, the second invalidation message sent over the subscription channel associated with the domain name; at the first server; receiving the second invalidation message for the particular token from the third server, and upon said receipt, determining that the particular token is one of the one or more tokens, and based at least in part upon said determination, marking the particular content stored in the local cache as invalid; wherein each of the first, second; and
third servers comprises at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor to perform the method as specified above. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A system comprising a plurality of servers operable to communicate over one or more computer networks, the system comprising:
-
a first server comprising at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor, the computer instructions including; instructions for receiving a request for particular content from one of a plurality of clients, the request comprising a domain name; instructions for sending the request for particular content, the request being sent to an origin server; instructions for, in response to the request, receiving a message comprising the particular content and one or more tokens distinct from the particular content; instructions for storing the particular content in a local cache of the first server in association with one or more tokens; instructions for sending a subscription request to the origin server, the subscription request comprising a request to receive invalidation messages for tokens associated with the domain name over a subscription channel associated with the domain name; a second server comprising at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor, the computer instructions including; instructions for receiving a write request from a same and another one of the plurality of clients, the write request comprising the domain name; instructions for sending the write request to the origin server; instructions for receiving a response to the write request from the origin server; instructions for determining that the response to the write request includes a particular token; instructions for, upon said determination, sending a first invalidation message for the particular token to a third server; the third server comprising at least one microprocessor and memory storing computer instructions for execution by the at least one microprocessor, the computer instructions including; instructions for receiving the first invalidation message and upon said receipt, sending a second invalidation message for the particular token to the first server, the second invalidation message sent over the subscription channel associated with the domain name; the first server'"'"'s computer instructions further including; instructions for receiving the second invalidation message for the particular token from the third server, and upon said receipt, determining that the particular token is one of the one or more tokens, and based at least in part upon said determination, marking the particular content stored in the local cache as invalid.
-
Specification