IP Library Granted Patent US 9,912,718
Granted Patent B1
US 9,912,718 · App. 13/371,374 · Granted Mar 6, 2018

Progressive prefetching

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 9,912,718
App. No.
13/371,374
Granted
Mar 6, 2018
Kind
B1
Abstract

The present invention relates to systems, apparatus, and methods of using usage data to determine the dependency structures of a web application, including dependency structures between follow-on objects of an initial object in a web transaction. In one embodiment, an input URL and associated dynamic response data are analyzed for such nested or dependent relationships. In further embodiments, analysis of these relationships are used to improve prefetching operations to lower overall page load times.

Claims (45)

1. A method comprising:

receiving transaction feedback information for a first web page transaction for a first web page, the first web page transaction comprising a first root request for a first root object, and resulting therefrom a plurality of child requests for a plurality of child objects;

determining based on the transaction feedback information:

an overall load time of the first web page,

a timing for completion of the first root request, and

a timing for completion of a first child request of the plurality of child requests requesting a first child object of the plurality of child objects;

calculating, utilizing the timing for completion of the first root request and the timing for completion of the first child request, an expected change in the overall load time of the first web page from caching the first child object; and

adjusting a caching priority for the first child object based on the expected change in the overall load time of the first web page,

wherein adjusting the caching priority comprises lowering a caching priority for a low priority object of the first web page transaction based on a determination that the low priority object does not impact the expected change in the overall load time, and

wherein adjusting caching priority comprises increasing a caching priority for a high priority object of the first web page transaction based on a determination that the high priority object increases the expected change in the overall load time.

2. The method of claim 1 , wherein the expected change in the overall load time of the first web page is a time saved per byte of cache used over a caching period.

3. The method of claim 1 further comprising:

identifying a parameter from a response to first child request that is used to create a second child request;

communicating the parameter to a content server; and

modifying, using the content server, at least one object of the first web page such that a set of object timings for the first web page transaction are optimized to shorten the expected change in the overall load time.

4. The method of claim 2 wherein the caching period comprises a freshness period specified by a content owner.

5. The method of claim 1 wherein the expected change in the overall load time of the first web page is further based on an expected second web page transaction, the expected second web page transaction requesting a second web page different from the first web page, the second web page including the first child object.

6. The method of claim 1 wherein the expected change in the overall load time of the first web page is based on an expected change in the overall load time of the first web page for a group of users.

7. The method of claim 1 , wherein the transaction feedback information comprises object interdependency information associated with the first web page.

8. A computing device comprising:

a processor;

a network connection communicatively coupled to a client computer and a content server computer; and

a computer-readable storage medium having instructions stored thereon for causing the processor to execute a cache optimizer, the cache optimizer configured to:

receive transaction feedback information for a portion of a first web page transaction for a first web page, the first web page transaction comprising a first root request for a first root object from the client computer to the content server computer, and resulting therefrom a plurality of child requests for a plurality of child objects;

determine based on the transaction feedback information:

an overall load time of the first web page,

a timing for completion of the first root request, and

a timing for completion of a first child request of the plurality of child requests requesting a first child object of the plurality of child objects;

calculate, utilizing the timing for completion of the first root request and the timing for completion of the first child request, an expected change in the overall load time of the first web page from caching the first child object; and

adjust a caching priority for the first child object based on the expected change in the overall load time of the first web page,

wherein adjusting the caching priority comprises lowering a caching priority for a low priority object of the first webpage transaction based on a determination that the low priority object does not impact the expected change in the overall load time, and

wherein adjusting caching priority comprises increasing a caching priority for a high priority object of the first web page transaction based on a determination that the high priority object increases the expected change in the overall load time.

9. The computing device of claim 8 wherein the caching priority is for a local cache on a user computer that is different from the computing device.

10. The computing device of claim 8 wherein the caching priority is a caching priority for a cache on a dynamic CDN.

11. The computing device of claim 8 further comprising communicating the transaction feedback information from the computing device to a prefetch analysis server, wherein the calculating the expected change in the overall load time of the first web page is performed on the prefetch analysis server.

12. The computing device of claim 8 wherein the expected change in the overall load time of the first web page comprises a first impact associated with a single user and a second impact associated with a group of users.

13. The computing device of claim 8 wherein the expected change in the overall load time of the first web page is a time saved per byte of cache used over a caching period.

14. The computing device of claim 13 wherein the caching period is a freshness period specified by a content owner.

15. The computing device of claim 8 wherein the expected change in the overall load time of the first web page is based on multiple expected future page loads for at least two separate web pages that use the child object; and

wherein the multiple expected future page loads are determined using a page load history for the at least two separate web pages.

16. The computing device of claim 8 wherein the expected change in the overall load time of the first web page is a time saved value calculated by determining a difference between a first expected page load time and a second expected page load time.

17. The computing device of claim 8 , further comprising a browser accelerator, the browser accelerator configured to:

observe the at least the portion of the first web page transaction; and

determine and provide the transaction feedback information to the cache optimizer based on the observed portion of the first web page transaction.

18. The computing device of claim 17 , further comprising a prefetch analyzer, the prefetch analyzer configured to provide hint information to the browser accelerator, and wherein the browser accelerator is further configured to determine the transaction feedback information further based on the hint information.

Assignments (11)
PARTIAL RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 48715/0589 Recorded Jun 6, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
To: VIASAT, INC.
Reel/Frame 071638/0083 →
PARTIAL RELEASE OF SECURITY INTEREST AT REEL/FRAME 063822/0446 Recorded Jun 4, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VIASAT, INC.
Reel/Frame 071495/0223 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2025
From: MUFG BANK, LTD. (AS SUCCESSOR-IN-INTEREST TO MUFG UNION BANK, N.A. (F/K/A UNION BANK, N.A.)), AS AGENT
To: VIASAT, INC.
Reel/Frame 071321/0026 →
PARTIAL RELEASE OF SECURITY INTEREST AT REEL/FRAME 059332/0558 Recorded Jun 4, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VIASAT, INC.
Reel/Frame 071495/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2025
From: VIASAT, INC.
To: SNAPPI HOLDCO, INC.
Reel/Frame 070293/0483 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2025
From: SNAPPI HOLDCO, INC.
To: SNAPPI, INC.
Reel/Frame 070293/0879 →
SECURITY AGREEMENT Recorded Jun 1, 2023
From: VIASAT, INC.
To: BANK OF AMERICA, N.A., AS AGENT
Reel/Frame 063822/0446 →
SECURITY AGREEMENT Recorded Mar 7, 2022
From: VIASAT, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 059332/0558 →
SECURITY INTEREST Recorded Mar 27, 2019
From: VIASAT, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 048715/0589 →
SECURITY AGREEMENT Recorded Dec 23, 2013
From: VIASAT, INC.
To: UNION BANK, N.A., AS AGENT FOR THE SECURED PARTIES
Reel/Frame 031868/0789 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2012
From: LEPESKA, PETER; SEBASTIAN, WILLIAM
To: VIASAT, INC.
Reel/Frame 027721/0964 →