IP Library Granted Patent US 10,567,540
Granted Patent B2
US 10,567,540 · App. 16/400,145 · Granted Feb 18, 2020

Cache key based request routing

Inventors: Donnevan Scott Yeager (Anderson Island, WA); Derek Shiell (Los Angeles, CA)
Assignee: Verizon Digital Media Services Inc.
H04L67/2842H04L67/1014
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,567,540
App. No.
16/400,145
Granted
Feb 18, 2020
Kind
B2
Abstract

Disclosed are systems and methods for performing consistent request distribution across a set of servers based on a request Uniform Resource Locator (URL) and one or more cache keys, wherein some but not all cache keys modify the content requested by the URL. The cache keys include query string parameters and header parameters. A request director parses a received request, excludes irrelevant cache keys, reorders relevant cache keys, and distributes the request to a server from the set of servers tasked with serving content differentiated from the request URL by the relevant cache keys. The exclusion and reordering preserves the consistent distribution of requests directed to the same URL but different content as a result of different cache key irrespective of the placement of the relevant cache keys and inclusion of irrelevant cache keys in the request.

Claims (88)

1. A device comprising:

a non-transitory computer-readable medium storing a set of processor-executable instructions; and

one or more processors configured to execute the set of processor-executable instructions, wherein executing the set of processor-executable instructions causes the one or more processors to:

receive a request comprising a Uniform Resource Locator (“URL”);

parse a base portion from a first location in the URL, a first cache key from a second location in the URL, and a second cache key from a third location in the URL;

determine that the first cache key does not affect a request routing decision;

determine that the second cache key does affect the request routing decision;

select a server from a set of servers based on the base portion and the second cache key; and

distribute the request to the selected server.

2. The device of claim 1 , wherein the request is a first request, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion, the second cache key, and a third cache key;

determine that the third cache key does not affect the request routing decision; and

distribute the second request to the same server that received the first request based on the base portion and the second cache key of the first and second requests matching, and other cache keys of the first and second requests not affecting the request routing decision.

3. The device of claim 1 , wherein the request is a first request, wherein the second cache key has a first value, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion and the second cache key having an identifier and a different second value;

exclude the second value from the request routing decision;

produce the request routing decision for the second request based on the base portion and the identifier of the second cache key without the second value of the second cache key; and

distribute the second request to the same server that received the first request.

4. The device of claim 1 , wherein the request is a first request, wherein each cache key comprises a key and a value, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion and the second cache key, wherein the key of the second cache key from the second request URL matches to the key of the second cache key from the first request URL, and wherein the value of the second cache key from the second request URL is different than the value of the second cache key from the first request URL;

select the server based on the base portion and the key of the second cache key from the second request URL; and

distribute the second request to the server that receives the first request.

5. The device of claim 1 , wherein each cache key is a query string argument that is appended to the URL.

6. The device of claim 1 , wherein each cache key comprises a key and a value, and wherein the processor-executable instructions further include processor-executable instructions to:

exclude the first cache key and the value of the second cache key from the request routing decision; and

wherein the processor-executable instructions to select the server include processor-executable instructions to produce the request routing decision based on the base portion and the key of the second cache key.

7. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

cache content identified by the request URL at the server prior to distributing the request to the server; and

serve the content in response to distributing the request to the server.

8. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

track a plurality of cache keys that affect the request routing decision;

match the second cache key from the request URL to one of the plurality of cache keys; and

determine that the first cache key from the request URL does not match to any cache keys of the plurality of cache keys.

9. The device of claim 1 , wherein the request is a first request, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion and a third cache key;

determine that the third cache key does affect the request routing decision;

select a different second server from the set of servers based on the base portion and the third cache key; and

distribute the second request to the second server.

10. The device of claim 1 , wherein the request is a first request, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion and the first cache key, wherein the URL of the second request excludes the second cache key;

select a different second server from the set of servers based on the base portion of the second request; and

distribute the second request to the second server.

11. The device of claim 1 , wherein the processor-executable instructions further include processor-executable instructions to:

identify, at the server, requested content from each of the base portion, the first cache key, and the second cache of the request URL; and

serve the requested content in response to the request.

12. The device of claim 11 , wherein the request is a first request, and wherein the processor-executable instructions further include processor-executable instructions to:

distribute a second request comprising the base portion, the first cache key, and the second cache key to the server, wherein the second cache key of the second request comprises a key and a first value, and wherein the second cache key of the first request comprises the key and a different second value; and

serve different second content in response to the second request, wherein the second content is different than the requested content served in response to the first request.

13. The device of claim 1 , wherein the second cache key comprises a key and a value, and wherein the processor-executable instructions further include processor-executable instructions to:

hash the base portion and the key of the second cache key; and

wherein the processor-executable instructions to select the server include processor-executable instructions to select the server from the set of servers based on a result of the hash.

14. The device of claim 1 , wherein the request is a first request, and wherein the processor-executable instructions further include processor-executable instructions to:

receive a second request comprising a URL with the base portion, the second cache key, and a third cache key;

determine that the third cache key does affect the request routing decision;

select a different second server from the set of servers based on the base portion, the second cache key, and the third cache key from the URL of the second request; and

distribute the second request to the second server.

15. A method comprising:

receiving a request comprising a Uniform Resource Locator (“URL”);

parsing a base portion from a first location in the URL, a first cache key from a second location in the URL, and a second cache key from a third location in the URL;

determining that the first cache key does not affect a request routing decision;

determining that the second cache key does affect the request routing decision;

selecting a server from a set of servers based on the base portion and the second cache key; and

distributing the request to the selected server.

16. The method of claim 15 further comprising:

receiving a second request comprising a URL with the base portion, the second cache key, and a third cache key;

determining that the third cache key does not affect the request routing decision; and

distributing the second request to the same server that received the first request based on the base portion and the second cache key of the first and second requests matching, and other cache keys of the first and second requests not affecting the request routing decision.

17. The method of claim 15 , wherein the request is a first request, wherein the method further comprises:

receiving a second request comprising a URL with the base portion and the second cache key having a different second value;

excluding the second value from the request routing decision;

producing the request routing decision for the second request based on the base portion and the second cache key without the second value of the second request; and

distributing the second request to the same server that received the first request.

18. The method of claim 15 , wherein the request is a first request, wherein each cache key comprises a key and a value, and wherein the method further comprises:

receiving a second request comprising a URL with the base portion and the second cache key, wherein the key of the second cache key from the second request URL matches to the key of the second cache key from the first request URL, and wherein the value of the second cache key from the second request URL is different than the value of the second cache key from the first request URL;

selecting the server based on the base portion and the key of the second cache key from the second request URL; and

distributing the second request to the server that receives the first request.

19. The method of claim 15 , wherein the request is a first request, and wherein the method further comprises:

receiving a second request comprising a URL with the base portion, the second cache key, and a third cache key;

determining that the third cache key does affect the request routing decision;

selecting a different second server from the set of servers based on the base portion, the second cache key, and the third cache key from the URL of the second request; and

distributing the second request to the second server.

20. A non-transitory computer-readable medium, storing a set of processor-executable instructions, which, when executed by one or more processors, cause the one or more processors to:

receive a request comprising a Uniform Resource Locator (“URL”);

parse a base portion from a first location in the URL, a first cache key from a second location in the URL, and a second cache key from a third location in the URL;

determine that the first cache key does not affect a request routing decision;

determine that the second cache key does affect the request routing decision;

select a server from a set of servers based on the base portion and the second cache key; and

distribute the request to the selected server.

Assignments (10)
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0406] Recorded Jul 9, 2025
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
To: UPLYNK, INC. (F/K/A EDGIO, INC.)
Reel/Frame 071875/0105 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0212] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071817/0877 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 068763/0276] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071818/0022 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2025
From: EDGIO, INC.
To: DRNC HOLDINGS, INC.
Reel/Frame 070071/0327 →
PATENT SECURITY AGREEMENT Recorded Aug 23, 2024
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 068763/0276 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 065597/0212 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065597/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2022
From: EDGECAST INC.
To: EDGIO, INC.
Reel/Frame 061738/0972 →
CHANGE OF NAME Recorded Mar 15, 2022
From: VERIZON DIGITAL MEDIA SERVICES INC.
To: EDGECAST INC.
Reel/Frame 059367/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2019
From: YEAGER, DONNEVAN SCOTT; SHIELL, DEREK
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 049045/0405 →