IP Library Granted Patent US 10,182,127
Granted Patent B2
US 10,182,127 · App. 15/050,217 · Granted Jan 15, 2019

Application-driven CDN pre-caching

Inventors: Jonathan Roshan Tuliani (Dublin, IE); Nicholas Leonard Holt (Seattle, WA); Cheng Huang (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L67/2842G06F12/0862G06F17/30902G06F2212/602G06F2212/6028H04L29/0881H04L29/08729H04L29/08801H04L67/2847
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,182,127
App. No.
15/050,217
Granted
Jan 15, 2019
Kind
B2
Abstract

Techniques are provided for the caching of content prior to the content being requested. A request for desired content may be received from a client application at a caching server. The request may also indicate additional content related to the desired content that may be subsequently requested by the client application. The indicated additional content (and the desired content, if not already cached) is retrieved from an origin server. The desired content is transmitted to the client application at the user device, and the additional content is cached at the caching server. Subsequently, a second request may be received from the client application that includes a request for the additional content. The additional content, which is now cached at the caching server, is served to the client application by the caching server in response to the second request (rather than being retrieved from the origin server).

Claims (51)

1. A method in a client application executing in a computing device, comprising:

generating a first request for desired content, the first request indicating additional content related to the desired content;

generating a likelihood indication indicating a likelihood the additional content will be subsequently requested by the client application, the likelihood indication based at least upon a proximity of the additional content to the desired content and having a likelihood value in a likelihood range that ranges from a low likelihood value to a high likelihood value, with content of the additional content immediately following the desired content having the high likelihood value;

transmitting the first request and the generated likelihood indication to a caching server;

receiving the desired content, but not the additional content, from the caching server, the caching server having retrieved the desired content from an origin server in response to the first request and having retrieved the additional content from the origin server based on the likelihood indication, the caching server having cached the retrieved additional content;

transmitting a second request to the caching server, the second request being a request for the additional content; and

receiving the cached additional content from the caching server in response to the second request.

2. The method of claim 1 , wherein the desired content includes a first map tile and the additional content includes a second map tile, and said generating the likelihood indication based at least upon a proximity of the additional content to the desired content comprises:

generating the likelihood indication based on a proximity of the second map tile to the first map tile in a map.

3. The method of claim 1 , wherein generating the likelihood indication comprises:

generating the likelihood indication based at least upon a behavior of a user of the client application with respect to the desired content.

4. The method of claim 3 , wherein the desired content includes a first content item and the additional content includes a second content item, and said generating the likelihood indication based at least upon a behavior of a user of the client application with respect to the desired content comprises:

generating the likelihood indication based on whether the user of the computing device pans in a direction of the second content item.

5. The method of claim 1 , wherein generating the likelihood indication comprises:

generating the likelihood indication based at least upon a type of content of at least one of the desired content or the additional content.

6. The method of claim 5 , wherein generating the likelihood indication based at least upon the type of content of at least one of the desired content or the additional content comprises:

generating the high likelihood value for a video frame in a video stream that immediately follows an additional video frame viewed using the client application.

7. The method of claim 5 , wherein generating the likelihood indication based at least upon the type of content of at least one of the desired content or the additional content comprises:

generating the high likelihood value for an audio frame in an audio object that immediately follows an additional audio frame played using the client application.

8. A computing device, comprising:

at least one processor;

at least one memory storing program code defining a client application configured to be executed by the at least one processor, the program code comprising:

a request formatter configured to generate a first request for desired content, and an additional content predictor configured to predict additional content related to the desired content, the request formatter configured to indicate the additional content in the first request, the additional content predictor including an additional content prioritizer configured to generate a likelihood indication indicating a likelihood the additional content will be subsequently requested by the client application, the likelihood indication based at least upon a proximity of the additional content to the desired content and having a likelihood value in a likelihood range that ranges from a low likelihood value to a high likelihood value, content of the additional content temporally adjacent to the desired content having the high likelihood value; and

a communication interface configured to transmit the first request and the generated likelihood indication to a caching server, and receive the desired content, but not the additional content, from the caching server, the caching server having retrieved the desired content from an origin server in response to the first request and having retrieved the additional content from the origin server based on the likelihood indication, the caching server having cached the retrieved additional content;

the request formatter configured to generate a second request, the second request requesting the additional content; and

the communication interface configured to transmit the second request to the caching server, and receive the cached additional content from the caching server in response to the second request.

9. The computing device of claim 8 , wherein the desired content includes a first map tile and the additional content includes a second map tile, and the additional content prioritizer is configured to generate the likelihood indication based on a proximity of the second map tile to the first map tile in a map.

10. The computing device of claim 8 , wherein the additional content prioritizer is configured to generate the likelihood indication based at least upon a behavior of a user of the client application with respect to the desired content.

11. The computing device of claim 10 , wherein the desired content includes a first content item and the additional content includes a second content item, and the additional content prioritizer is configured to generate the likelihood indication based on whether the user of the computing device pans in a direction of the second content item.

12. The computing device of claim 8 , wherein the additional content prioritizer is configured to generate the likelihood indication based at least upon a type of content of at least one of the desired content or the additional content.

13. The computing device of claim 8 , wherein the additional content prioritizer is configured to generate the high likelihood value for a video frame in a video stream that immediately follows an additional video frame viewed using the client application.

14. The computing device of claim 8 , wherein the additional content prioritizer is configured to generate the high likelihood value for an audio frame in an audio object that immediately follows an additional audio frame played using the client application.

15. A computing device, comprising:

at least one processor; and

program code defining a client application configured to be executed by the at least one processor to perform a method including:

generating a first request for desired content, the first request indicating additional content related to the desired content;

generating a likelihood indication indicating a likelihood the additional content will be subsequently requested by the client application, the likelihood indication based at least upon a proximity of the additional content to the desired content and having a likelihood value in a likelihood range that ranges from a low likelihood value to a high likelihood value, content of the additional content spatially adjacent to the desired content having the high likelihood value;

transmitting the first request and the generated likelihood indication to a caching server;

receiving the desired content, but not the additional content, from the caching server, the caching server having retrieved the desired content from an origin server in response to the first request and having retrieved the additional content from the origin server based on the likelihood indication, the caching server having cached the retrieved additional content;

transmitting a second request to the caching server, the second request being a request for the additional content; and

receiving the cached additional content from the caching server in response to the second request.

16. The computing device of claim 15 , wherein the desired content includes a first map tile and the additional content includes a second map tile, and said generating the likelihood indication based at least upon a proximity of the additional content to the desired content comprises:

generating the likelihood indication based on a proximity of the second map tile to the first map tile in a map.

17. The computing device of claim 15 , wherein generating the likelihood indication comprises:

generating the likelihood indication based at least upon a behavior of a user of the client application with respect to the desired content.

18. The computing device of claim 17 , wherein the desired content includes a first content item and the additional content includes a second content item, and said generating the likelihood indication based at least upon a behavior of a user of the client application with respect to the desired content comprises:

generating the likelihood indication based on whether the user of the computing device pans in a direction of the second content item.

19. The computing device of claim 15 , wherein generating the likelihood indication comprises:

generating the likelihood indication based at least upon a type of content of at least one of the desired content or the additional content.

20. The computing device of claim 19 , wherein generating the likelihood indication based at least upon a type of content of at least one of the desired content or the additional content comprises:

generating the high likelihood value for a video frame in a video stream that immediately follows an additional video frame viewed using the client application.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2016
From: TULIANI, JONATHAN ROSHAN; HOLT, NICHOLAS LEONARD; HUANG, CHENG
To: MICROSOFT CORPORATION
Reel/Frame 037816/0964 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2016
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 037816/0991 →
Continuity (2)
Continuation 13328444 · Dec 16, 2011
Related Publication 20160173639A1 · Jun 16, 2016
Cited By (1)
US 12,425,211