IP Library Granted Patent US 11,095,494
Granted Patent B2
US 11,095,494 · App. 15/478,310 · Granted Aug 17, 2021

Methods and systems for implementing a cache model in a prefetching system

Inventors: Peter Lepeska (Boston, MA); William B. Sebastian (Falmouth, MA)
Assignee: ViaSat, Inc.
H04L29/06047G06F16/9574
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 11,095,494
App. No.
15/478,310
Granted
Aug 17, 2021
Kind
B2
Abstract

The present invention relates to systems and methods of enhancing prefetch operations. One potential method comprises fetching an object from a page on a web server. The method may further include storing, at a proxy server, caching instructions for the fetched object. The proxy server may be connected with the client and the object is cached at the client. Furthermore, the method may include identifying a prefetchable reference to the fetched object in a subsequent web page and using the caching instructions stored on the proxy server to determine if a fresh copy of the object will be requested by the client. Further, the method may include, based on the determination that the object will be requested, sending a prefetch request for the object using an If-Modified-Since directive, and transmitting a response to the If-Modified-Since directive prefetch request to a proxy client. The proxy client may then either serve the response to the client or a copy of the object stored at the proxy client, depending on the request for the object from the client.

Claims (70)

1. A method of enhancing prefetch operations, the method comprising:

storing, in a client-side cache at a client-side computing device, a cached version of a Web object;

identifying, at the client-side cache, the Web object as a prefetchable reference of an expected part of a web page transaction from a client browser;

thereafter receiving, at the client-side computing device from a server-side computing device, a prefetched object-valid response to a prefetch validity check of the cached version of the Web object by the server-side computing device, the prefetched object-valid response indicating that the cached version of the Web object identified as the prefetchable reference is valid, the prefetch validity check based on (i) a prefetch validity request received by the server-side computing device from the client-side computing device for the cached version of the Web object in response to identifying the Web object as the prefetchable reference of the expected part of the web page transaction, or (ii) a model of the client-side cache stored at the server-side computing device;

storing, at the client-side computing device, the prefetched object-valid response in association with the cached version of the Web object;

identifying, at the client-side computing device, a request for the Web object from a client browser;

determining, at the client-side computing device, after receipt of the prefetched object-valid response at the client-side computing device whether the request for the Web object from the client browser includes a client-initiated object validity check initiated at the client browser that corresponds to the prefetch validity check of the cached version of the Web object identified as the prefetchable reference; and

if the request for the Web object is determined to include the client-initiated object validity check that corresponds to the prefetch validity check, responding, by the client-side computing device, to the request for the Web object with the prefetched object-valid response, wherein the responding to the request for the Web object with the prefetched object-valid response does not comprise serving the cached version of the Web object to the client browser.

2. The method of claim 1 , further comprising, if the request for the Web object from the client browser is determined not to include the client-initiated object validity check that corresponds to the prefetch validity check, serving, by the client-side computing device, the cached version of the Web object to the client browser.

3. The method of claim 2 further comprising:

generating, at the server-side computing device, the prefetch validity check; and

receiving, at the server-side computing device, the prefetched object-valid response responsive to the prefetch validity check.

4. The method of claim 3 further comprising sending, at the server-side computing device, the prefetch validity check to a source server that is a source of the Web object.

5. The method of claim 4 , wherein the receiving the prefetched object-valid response comprises receiving the prefetched object-valid response from the source server.

6. The method of claim 3 further comprising:

storing, at the server-side computing device, a time-sensitive validity status of the cached version of the Web object; and

determining, at the server-side computing device, to update the time-sensitive validity status of the cached version of the Web object, wherein the generating the prefetch validity check is further based on determining to update the time-sensitive validity status of the cached version of the Web object.

7. The method of claim 2 , wherein:

the storing the cached version of the Web object comprises storing a time-sensitive validity status of the cached version of the Web object at the client-side computing device; and

the storing the prefetched object-valid response updates the time-sensitive validity status of the cached version of the Web object at the client-side computing device.

8. The method of claim 2 , wherein the serving the cached version of the Web object comprises serving the cached version of the Web object with a message indicating that the request for the Web object is fulfilled.

9. The method of claim 8 , wherein the message comprises an HTTP 200 response.

10. The method of claim 2 , wherein the prefetched object-valid response comprises an HTTP 304 object not modified response.

11. The method of claim 2 , wherein the client-initiated object validity check comprises an If-Modified-Since tag.

12. The method of claim 2 , wherein the client-initiated object validity check comprises an If-None-Match tag.

13. The method of claim 2 , wherein the storing the cached version of the Web object further comprises storing, at the client-side computing device, metadata comprising time-sensitive validity data for the cached version of the Web object.

14. The method of claim 13 wherein the metadata comprises a last modified time for the cached version of the Web object.

15. The method of claim 13 , wherein the metadata comprises an entity tag (ETag) identifier for the cached version of the Web object.

16. The method of claim 13 , wherein the metadata comprises expiration data of the cached version of the Web object.

17. The method of claim 2 , wherein the client-side computing device comprises the client browser.

18. The method of claim 2 , wherein:

the cached version of the Web object is part of a first Web transaction; and

the request for the Web object by the client browser is part of a subsequent second Web transaction.

19. A non-transitory computer-readable medium comprising processor-executable instructions configured to cause a processor to:

store, in a client-side cache at a client-side computing device, a cached version of a Web object;

identifying, at the client-side cache, the Web object as a prefetchable reference of an expected part of a web page transaction from a client browser;

thereafter receive, at the client-side computing device from a server-side computing device, a prefetched object-valid response to a prefetch validity check of the cached version of the Web object by the server-side computing device, the prefetched object-valid response indicating that the cached version of the Web object identified as the prefetchable reference is valid, the prefetch validity check based on (i) a prefetch validity request received by the server-side computing device from the client-side computing device for the cached version of the Web object in response to identifying the Web object as the prefetchable reference of the expected part of the web page transaction, or (ii) a model of the client-side cache stored at the server-side computing device;

store, at the client-side computing device, the prefetched object-valid response in association with the cached version of the Web object;

identify, at the client-side computing device, a request for the Web object from a client browser;

determine, at the client-side computing device, after receipt of the prefetched object-valid response at the client-side computing device whether the request for the Web object from the client browser includes a client-initiated object validity check initiated at the client browser that corresponds to the prefetch validity check of the cached version of the Web object identified as the prefetchable reference; and

if the request for the Web object is determined to include the client-initiated object validity check that corresponds to the prefetch validity check, respond, by the client-side computing device, to the request for the Web object with the prefetched object-valid response, wherein the responding to the request for the Web object with the prefetched object-valid response does not comprise serving the cached version of the Web object to the client browser.

20. The non-transitory computer-readable medium of claim 19 , wherein the processor-executable instructions are further configured to cause the processor to, if the request for the Web object from the client browser is determined not to include the client-initiated object validity check that corresponds to the prefetch validity check, serve, by the client-side computing device, the cached version of the Web object to the client browser.

21. The non-transitory computer-readable medium of claim 20 , wherein the processor-executable instructions are further configured to cause the processor to:

generate, at the server-side computing device, the prefetch validity check; and

receive, at the server-side computing device, the prefetched object-valid response responsive to the prefetch validity check.

22. The non-transitory computer-readable medium of claim 21 wherein the processor-executable instructions are further configured to cause the processor to send, at the server-side computing device, the prefetch validity check to a source server that is a source of the Web object.

23. The non-transitory computer-readable medium of claim 22 , wherein the processor-executable instructions are further configured to cause the processor to receive the prefetched object-valid response from the source server.

24. The non-transitory computer-readable medium of claim 21 wherein the processor-executable instructions are further configured to cause the processor to:

store, at the server-side computing device, a time-sensitive validity status of the cached version of the Web object; and

determine, at the server-side computing device, to update the time-sensitive validity status of the cached version of the Web object,

wherein the processor-executable instructions configured to cause the processor to generate the prefetch validity check are responsive to a determination to update the time-sensitive validity status of the cached version of the Web object.

25. The non-transitory computer-readable medium of claim 20 , wherein the processor-executable instructions configured to cause the processor to the store the cached version of the Web object comprises processor-executable instructions configured to cause the processor to store a time-sensitive validity status of the cached version of the Web object at the client-side computing device; and wherein

wherein the processor-executable instructions configured to cause the processor to store the prefetched object-valid response is further configured to cause the processor to update the time-sensitive validity status of the cached version of the Web object at the client-side computing device.

26. The non-transitory computer-readable medium of claim 20 , wherein the processor-executable instructions are further configured to cause the processor to serve the cached version of the Web object and comprises serving the cached version of the Web object with a message indicating that the request for the Web object is fulfilled.

27. The non-transitory computer-readable medium of claim 26 , wherein the message comprises an HTTP 200 response.

28. The non-transitory computer-readable medium of claim 20 , wherein the prefetched object-valid response comprises an HTTP 304 object not modified response.

29. The non-transitory computer-readable medium of claim 20 , wherein the client-initiated object validity check comprises an If-Modified-Since tag.

30. The non-transitory computer-readable medium of claim 20 , wherein the client-initiated object validity check comprises an If-None-Match tag.

31. The non-transitory computer-readable medium of claim 20 , wherein the processor-executable instructions to cause the processor to store the cached version of the Web object and further comprises processor-executable instructions are further configured to cause the processor to store, at the client-side computing device, metadata comprising time-sensitive validity data for the cached version of the Web object.

32. The non-transitory computer-readable medium of claim 31 wherein the metadata comprises a last modified time for the cached version of the Web object.

33. The non-transitory computer-readable medium of claim 31 , wherein the metadata comprises an entity tag (ETag) identifier for the cached version of the Web object.

34. The non-transitory computer-readable medium of claim 31 , wherein the metadata comprises expiration data of the cached version of the Web object.

35. The non-transitory computer-readable medium of claim 20 , wherein the client-side computing device comprises the client browser.

36. The non-transitory computer-readable medium of claim 20 , wherein:

the cached version of the Web object is part of a first Web transaction; and

the request for the Web object by the client browser is part of a subsequent second Web transaction.

37. The method of claim 1 , further comprising:

determining, at the client-side computing device, both whether the request for the Web object from the client browser includes a client-initiated object validity check initiated at the client browser that corresponds to the prefetch validity check of the cached version of the Web object identified as the prefetchable reference and whether the request for the Web object from the client browser matches the cached version of the Web object at the client-side cache.

38. The non-transitory computer-readable medium of claim 19 wherein the processor-executable instructions are further configured to cause the processor to:

determining, at the client-side computing device, both whether the request for the Web object from the client browser includes a client-initiated object validity check initiated at the client browser that corresponds to the prefetch validity check of the cached version of the Web object identified as the prefetchable reference and whether the request for the Web object from the client browser matches the cached version of the Web object at the client-side cache.

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 May 11, 2017
From: LEPESKA, PETER; SEBASTIAN, WILLIAM B
To: VIASAT, INC.
Reel/Frame 042347/0598 →
Continuity (4)
Continuation 13738941 · Jan 10, 2013
Continuation In Part 12252181 · Oct 15, 2008
Provisional Application 60980101 · Oct 15, 2007
Related Publication 20170272301A1 · Sep 21, 2017