IP Library Granted Patent US 10,567,493
Granted Patent B2
US 10,567,493 · App. 15/899,653 · Granted Feb 18, 2020

Intelligent predictive stream caching

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,493
App. No.
15/899,653
Granted
Feb 18, 2020
Kind
B2
Abstract

Some embodiments provide intelligent predictive stream caching for live, linear, or video-on-demand streaming content using prefetching, segmented caching, and request clustering. Prefetching involves retrieving streaming content segments from an origin server prior to the segments being requested by users. Prefetching live or linear streaming content segments involves continually reissuing requests to the origin until the segments are obtained or a preset retry duration is completed. Prefetching is initiated in response to a first request for a segment falling within a particular interval. Request clustering commences thereafter. Subsequent requests are queued until the segments are retrieved. Segmented caching involves caching segments for one particular interval. Segments falling within a next interval are not prefetched until a first request for one such segment in the next interval is received. Cached segments from the previous interval can be replaced in cache with segments for the current interval, thereby minimizing cache footprint utilization.

Claims (42)

1. A method comprising:

receiving a client request for a first segment of streaming content at a streaming server, wherein the streaming content is published to a different origin server;

submitting a set of requests for the first segment and at least a subsequent second segment of the streaming content from the streaming server to the origin server in response to said receiving the client request for the first segment;

receiving the first segment at the streaming server from the origin server in response to said submitting occurring after the first segment is published to the origin server and before the second segment is published to the origin server;

detecting at the streaming server, that the second segment has not been published to the origin server based on said submitting of the set of requests and said receiving the first segment without the second segment;

reissuing a subset of the set of requests for at least the second segment from the streaming server to the origin server before receiving a client request for the second segment at the streaming server;

receiving the second segment at the streaming server from the origin server in response to said reissuing occurring after the second segment is published to the origin server;

receiving a client request for the second segment at the streaming server; and

serving the second segment from the streaming server in response to the client request for the second segment.

2. The method of claim 1 , wherein said submitting comprises establishing a single network connection between the streaming server and the origin server in response to said receiving the client request for the first segment, and sending the set of requests over the single network connection after said establishing.

3. The method of claim 2 , wherein said reissuing comprises reusing the single network connection from said establishing, and sending the subset of requests over the single network connection.

4. The method of claim 1 further comprising determining a duration of at least the first segment in response to said receiving the first segment.

5. The method of claim 4 , wherein said detecting comprises waiting said duration after said submitting, and wherein said reissuing comprises sending the subset of requests in response to not receiving the second segment during said waiting.

6. The method of claim 1 , wherein the streaming server is a first streaming server, and wherein said submitting comprises notifying at least a different second streaming server about prefetching of at least the second segment by the first streaming server.

7. The method of claim 6 further comprising receiving a client request for the second segment at the second streaming server after said notifying, and queuing the client request for the second segment at the second streaming server while awaiting retrieval of the second segment by the first streaming server in response to said notifying.

8. The method of claim 7 further comprising passing the second segment from the first streaming server to the second streaming server after said receiving the second segment by the first streaming server.

9. The method of claim 8 further comprising serving the second segment from the second streaming server in response to said passing the second segment and the second streaming server receiving the second segment from the first streaming server.

10. The method of claim 6 further comprising distributing the second segment from the first streaming server to the second streaming server in response to said receiving the second segment by the first streaming server and before receiving a client request for the second segment at the first streaming server or the second streaming server.

11. The method of claim 1 , wherein said reissuing comprises resending a first prefetch request for the second segment at a first bitrate to the origin server, and resending a second prefetch request for the second segment at a different second bitrate to the origin server.

12. The method of claim 1 , wherein said detecting comprises receiving an HyperText Transfer Protocol (HTTP) message, with a status code indicating that the second segment is not yet available at the origin server, contemporaneously with said receiving the first segment.

13. A method for prefetching stream segments, the method comprising:

receiving a client request for a first segment of streaming content at a first streaming server;

submitting a set of requests from the first streaming server to an origin server at which the streaming content is published, wherein the set of requests comprises a first request for the first segment and a second prefetch request for a second segment of the streaming content, wherein the second prefetch request is submitted prior to the first streaming server receiving a client request for the second segment;

notifying at least a second streaming server by the first streaming server of said submitting of the set of requests by the first streaming server;

receiving a client request for the second segment at the second streaming server;

queuing the client request for the second segment at the second streaming server based on said notifying by the first streaming server;

distributing at least the second segment from the first streaming server to the second streaming server upon receipt of the second segment from the origin server; and

responding to the client request for the second segment from the second streaming server by providing the second segment received as a result of said distributing.

14. The method of claim 13 further comprising receiving a client request for a third segment at the second streaming server, and submitting a second set of requests from the second streaming server to the origin server before receiving any notification from another streaming server about retrieval of said third segment, wherein the second set of requests comprises a request for the third segment and a prefetch request for a fourth segment of the streaming content, wherein the prefetch request for the fourth segment is submitted prior to the second streaming server receiving a client request for the fourth segment.

15. The method of claim 14 further comprising notifying at least the first streaming server by the second streaming server of said submitting of the second set of requests by the second streaming server.

16. The method of claim 15 further comprising distributing the third and fourth segments from the second streaming server to the first streaming server upon receipt of the third and fourth segments from the origin server at the second streaming server.

17. 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 client request for a first segment of streaming content, wherein the streaming content is published to an origin server;

submit a set of requests for the first segment and at least a subsequent second segment of the streaming content to the origin server in response to said receiving the client request for the first segment;

receive the first segment at the device from the origin server in response to said submitting occurring after the first segment is published to the origin server and before the second segment is published to the origin server;

detect that the second segment has not been published to the origin server based on said submitting of the set of requests and said receiving the first segment without the second segment;

reissue a subset of the set of requests for at least the second segment to the origin server before receiving a client request for the second segment at the device;

receive the second segment from the origin server in response to said reissuing occurring after the second segment is published to the origin server;

receive a client request for the second segment; and

serve the second segment in response to the client request for the second segment.

Assignments (11)
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 Feb 20, 2018
From: DIVINCENZO, JONATHAN; CHOI, SEUNGYEOB; SATHYANARAYANA, KARTHIK; PETERS, ROBERT J.; DYONIZIAK, ERIC
To: EDGECAST NETWORKS, INC.
Reel/Frame 044973/0936 →
CHANGE OF NAME Recorded Feb 20, 2018
From: EDGECAST NETWORKS, INC.
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 045373/0497 →