IP Library Granted Patent US 10,789,325
Granted Patent B2
US 10,789,325 · App. 15/755,928 · Granted Sep 29, 2020

Systems and methods for prefetching dynamic URLs

Inventors: Peter J Lepeska (Boston, MA); Devin R Toth (Quincy, MA)
Assignee: VIASAT, Inc.
G06F16/9574G06F16/9566
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,789,325
App. No.
15/755,928
Granted
Sep 29, 2020
Kind
B2
Abstract

The present disclosure relates to prefetching dynamic URLs. For example, one disclosed method includes the steps of receiving breadcrumb information from a first client device, the breadcrumb information comprising a dynamic URL, a dynamically-generated value, and an indication of a method of generating the dynamically-generated value; determining a template for the dynamic URL based on the dynamically-generated value and the method of generating the dynamically-generated value; receiving a request for a hint for the URL; and in response to receiving the request for the hint from a second client device, transmitting the template for the dynamic URL to the second client device.

Claims (77)

1. A method comprising:

storing breadcrumb information comprising:

identifications of generating methods for generating dynamic values, wherein the generating methods in the breadcrumb information each correspond to a different function, and

for each of the generating methods, at least one dynamic value generated by the generating method, wherein each of the dynamic values in the breadcrumb information is a value returned by a call to one of the functions;

receiving a dynamic URL from a first client device, the dynamic URL comprising a first dynamically-generated value;

determining a template for generating the dynamic URL based on the first dynamically-generated value and the breadcrumb information, wherein the determining a template comprises:

identifying a static portion of the dynamic URL, and

matching the dynamically-generated value of the dynamic URL with a value or a transformation of a value in the breadcrumb information returned by one of the functions,

wherein the template comprises the identified static portion and the one of the functions; and

transmitting the template to a second client device in response to a request for hinting information corresponding to the dynamic URL.

2. The method of claim 1 , wherein the determining a template comprises:

finding in the dynamic URL a static portion, and

identifying one of the generating methods in the breadcrumb information that corresponds to a method that generated the first dynamically-generated value of the dynamic URL,

the template comprising the static portion and an identification of the one of the generating methods.

3. The method of claim 1 , wherein the breadcrumb information further comprises cache hit information associated with one or more templates, the method further comprising validating at least one template based on the cache hit information.

4. The method of claim 1 , wherein the first client device and the second client device are different client devices.

5. The method of claim 1 , wherein the determining a template comprises:

matching the dynamically-generated value of the dynamic URL with one of the dynamic values in the breadcrumbs, and

identifying one of the generating methods in the breadcrumbs that generated the matching dynamic value.

6. The method of claim 5 , wherein the template comprises a static portion of the dynamic URL and the identified generating method.

7. The method of claim 1 , wherein the determining a template further comprises:

identifying a transform that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified transform.

8. The method of claim 1 , wherein the determining a template further comprises:

identifying a sequence of transforms that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified sequence of transforms.

9. A device comprising:

a storage device in which breadcrumb information is stored comprising:

identifications of generating methods for generating dynamic values, wherein the generating methods in the breadcrumb information each correspond to a different function, and

for each of the generating methods, at least one dynamic value generated by the generating method, wherein each of the dynamic values in the breadcrumb information is a value returned by a call to one of the functions; and

a processor configured to execute processor-executable program code stored in a memory, the processor-executable program code configured to cause the processor to:

receive a dynamic URL from a first client device, the dynamic URL comprising a first dynamically-generated value;

determine a template for generating the dynamic URL based on the first dynamically-generated value and the breadcrumb information, wherein the processor-executable program code configured to cause the processor to determine a template comprises processor-executable program code configured to cause the processor to:

identify a static portion of the dynamic URL, and

match the dynamically-generated value of the dynamic URL with a value or a transformation of a value in the breadcrumb information returned by one of the functions,

wherein the template comprises the identified static portion and the one of the functions; and

transmit the template to a second client device in response to a request for hinting information corresponding to the dynamic URL.

10. The device of claim 9 , wherein the processor-executable program code is further configured to cause the processor to:

find in the dynamic URL a static portion, and

identify one of the generating methods in the breadcrumb information that corresponds to a method that generated the first dynamically-generated value of the dynamic URL,

the template comprising the static portion and an identification of the one of the generating methods.

11. The device of claim 9 , wherein the breadcrumb information further comprises cache hit information associated with one or more templates, wherein the processor-executable program code is further configured to cause the processor to validate at least one template based on the cache hit information.

12. The device of claim 9 , wherein the first client device and the second client device are different client devices.

13. The device of claim 9 , wherein the processor-executable program code is further configured to cause the processor to:

match the dynamically-generated value of the dynamic URL with one of the dynamic values in the breadcrumbs, and

identify one of the generating methods in the breadcrumbs that generated the matching dynamic value.

14. The device of claim 13 , wherein the template comprises a static portion of the dynamic URL and the identified generating method.

15. The device of claim 9 , wherein the processor-executable program code is further configured to cause the processor to:

identify a transform that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified transform.

16. The device of claim 9 , wherein the processor-executable program code is further configured to cause the processor to:

identify a sequence of transforms that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified sequence of transforms.

17. A non-transitory computer-readable medium comprising processor-executable program code to cause a processor to:

receive a dynamic URL from a first client device, the dynamic URL comprising a first dynamically-generated value;

determine a template for generating the dynamic URL based on the first dynamically-generated value and breadcrumb information comprising identifications of generating methods for generating dynamic values, wherein the generating methods in the breadcrumb information each correspond to a different function, and for each of the generating methods, at least one dynamic value generated by the generating method,

wherein each of the dynamic values in the breadcrumb information is a value returned by a call to one of the functions, wherein the processor-executable program code to cause a processor to determine the template comprises processor-executable program code to cause the processor to:

identify a static portion of the dynamic URL, and

match the dynamically-generated value of the dynamic URL with a value in the breadcrumb information returned by one of the functions, and

wherein the template comprises the identified static portion and the one of the functions; and

transmit the template to a second client device in response to a request for hinting information corresponding to the dynamic URL.

18. The computer-readable medium of claim 17 , wherein the processor-executable program code is further configured to cause the processor to:

find in the dynamic URL a static portion, and

identify one of the generating methods in the breadcrumb information that corresponds to a method that generated the first dynamically-generated value of the dynamic URL,

the template comprising the static portion and an identification of the one of the generating methods.

19. The computer-readable medium of claim 17 , wherein the breadcrumb information further comprises cache hit information associated with one or more templates, the method further comprising validating at least one template based on the cache hit information.

20. The computer-readable medium of claim 17 , wherein the first client device and the second client device are different client devices.

21. The computer-readable medium of claim 17 , wherein the processor-executable program code is further configured to cause the processor to:

match the dynamically-generated value of the dynamic URL with one of the dynamic values in the breadcrumbs, and

identify one of the generating methods in the breadcrumbs that generated the matching dynamic value.

22. The computer-readable medium of claim 21 , wherein the template comprises a static portion of the dynamic URL and the identified generating method.

23. The computer-readable medium of claim 17 , wherein the processor-executable program code is further configured to cause the processor to:

identify a transform that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified transform.

24. The computer-readable medium of claim 17 , wherein the processor-executable program code is further configured to cause the processor to:

identify a sequence of transforms that, when applied to one of the values in the breadcrumb information, results in the transformed value that matches the dynamically-generated value of the dynamic URL,

wherein the template comprises the identified static portion, a function that corresponds to the one of the values in the breadcrumb information, and the identified sequence of transforms.

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 AGENT
To: VIASAT, INC.
Reel/Frame 071321/0001 →
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 →
SUPPLEMENTAL PATENT SECURITY AGREEMENT Recorded Sep 19, 2023
From: VIASAT, INC.
To: MUFG BANK, LTD., AS AGENT
Reel/Frame 064948/0379 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2018
From: LEPESKA, PETER J; TOTH, DEVIN R
To: VIASAT, INC.
Reel/Frame 045533/0061 →
Continuity (2)
Provisional Application 62211246 · Aug 28, 2015
Related Publication 20180357326A1 · Dec 13, 2018