IP Library Granted Patent US 9,654,328
Granted Patent B2
US 9,654,328 · App. 13/738,941 · Granted May 16, 2017

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

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,654,328
App. No.
13/738,941
Granted
May 16, 2017
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 (88)

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

storing, at a client-side proxy, a first object;

receiving, at the client-side proxy, a prefetched object valid response to a prefetch validity check comprising a first object validity check associated with the first object;

storing at the client-side proxy the prefetched object valid response and associating the stored prefetched object valid response with the first object;

identifying at the client-side proxy, a request for the first object from a client;

determining, at the client-side proxy, whether the request for the first object from the client includes a second object validity check;

responsive to determining that the request for the first object from the client does not include the second object validity check, generating a request fulfilled response based on the stored prefetched object valid response; and

serving the first object from the client-side proxy to the client with the request fulfilled response.

2. The method of claim 1 further comprising:

fetching, by a proxy server on behalf of the client, the first object from a content server;

storing, at the proxy server, metadata comprising caching instructions which comprise validity data for the first object and communicating the first object to the client-side proxy in conjunction with storing the first object at the client-side proxy;

identifying, by the proxy server, a prefetchable reference to the first object in a subsequent web page transaction including the client;

based on identifying the prefetchable reference to the first object, sending a first prefetch request for the first object using a third object validity check, wherein the third object validity check is based on the metadata;

receiving, at the proxy server, the prefetched object valid response to the first prefetch request; and

communicating the prefetched object valid response to the client.

3. The method of claim 2 wherein the metadata comprises a last modified time for the first object.

4. The method of claim 3 wherein the third object validity check comprises an If-Modified-Since tag.

5. The method of claim 4 wherein the prefetched object valid response comprises an HTTP 304 object not modified response.

6. The method of claim 5 wherein the request fulfilled response comprises an HTTP 200 response.

7. The method of claim 2 wherein the metadata comprises an entity tag (ETag) identifier.

8. The method of claim 7 wherein the third object validity check comprises an If-None-Match tag.

9. The method of claim 2 further comprising:

using the caching instructions stored on the proxy server to determine that a fresh copy of the first object will be requested by the client prior to sending the first prefetch request;

wherein the metadata comprises a first object expiration value.

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

storing, at a client-side proxy, a first object;

receiving, at the client-side proxy, a prefetched object valid response to a prefetch validity check associated with the first object, wherein the prefetch validity check comprises a first validity check;

storing at the client-side proxy the prefetched object valid response and associating the stored prefetched object valid response with the first object;

receiving a request for the first object from a client, the request including a second validity check;

responsive to identifying, at the client-side proxy, the request for the first object and the second validity check, determining that the client needs to be served the first object;

generating a request fulfilled response based on the stored prefetched object valid response; and

serving the first object from the client-side proxy to the client with the request fulfilled response.

11. The method of claim 10 further comprising:

fetching, by a proxy server on behalf of the client, the first object from a content server;

storing, at the proxy server, metadata comprising caching instructions which comprise validity data for the first object and communicating the first object to the client-side proxy in conjunction with storing the first object at the client-side proxy;

identifying, by the proxy server, a prefetchable reference to the first object in a subsequent web page transaction including the client;

based on identifying the prefetchable reference to the first object, sending a first prefetch request for the first object using a third object validity check, wherein the third object validity check is based on the metadata;

receiving, at the proxy server, the prefetched object valid response to the first prefetch request; and

communicating the prefetched object valid response to the client.

12. The method of claim 11 wherein the metadata comprises a last modified time for the first object.

13. The method of claim 12 wherein the third object validity check comprises an If-Modified-Since tag.

14. The method of claim 11 wherein the metadata comprises an entity tag (ETag) identifier.

15. The method of claim 14 wherein the third object validity check comprises an If-None-Match tag.

16. The method of claim 15 wherein the prefetched object valid response comprises an HTTP 304 object not modified response.

17. The method of claim 16 wherein the request fulfilled response comprises an HTTP 200 response.

18. A system comprising:

a client-side proxy device comprising:

a first processor;

an object cache; and

a computer readable storage medium comprising instructions that when executed by the first processor cause the client-side proxy device to:

store, in the object cache, a first object;

receive a prefetched object valid response to a prefetch validity check comprising a first object validity check associated with the first object;

store the prefetched object valid response and associate the stored prefetched object valid response with the first object;

identify a request for the first object from a client;

determine whether the request for the first object from the client includes a second object validity check;

in response to a determination that the request for the first object from the client does not include the second object validity check, generate a request fulfilled response based on the stored prefetched object valid response; and

serve the first object from the object cache to the client with the request fulfilled response.

19. The system of claim 18 further comprising a proxy server computer communicatively coupled to the client-side proxy device via a high latency link, the proxy server computer comprising:

a second processor;

a second computer readable storage medium comprising instructions that when executed by the second processor cause the proxy server computer to:

fetch on behalf of the client, the first object from a content server;

communicate to a metadata database, caching instructions which comprise validity data for the first object;

communicate the first object to the client-side proxy device in conjunction with the client-side proxy device storing the first object at the object cache;

identify a prefetchable reference to the first object in a subsequent web page transaction including the client-side proxy device;

based on identifying the prefetchable reference to the first object, send a first prefetch request for the first object using a third object validity check, wherein the third object validity check is based on the caching instructions;

receive the prefetched object valid response to the first prefetch request; and

communicate the prefetched object valid response to the client-side proxy device.

20. The system of claim 19 further comprising:

a server-side database computer comprising the metadata database, coupled to the proxy server computer, wherein the metadata database comprises a last modified date, an expiration date, a caching permitted value, and an entity tag for a plurality of objects intercepted at the proxy server computer.

21. A system comprising:

a client-side proxy device comprising:

a first processor;

an object cache; and

a computer readable storage medium comprising instructions that when executed by the first processor cause the client-side proxy device to:

store, in the object cache, a first object;

receive a prefetched object valid response to a prefetch validity check comprising a first object validity check associated with the first object;

store the prefetched object valid response and associate the stored prefetched object valid response with the first object;

receive a request for the first object from a client, the request including a second validity check;

responsive to an identification of the request for the first object and the second validity check, determine that the client needs to be served the first object;

generate a request fulfilled response based on the stored prefetched object valid response; and

serve the first object from the client-side proxy to the client with the request fulfilled response.

22. The system of claim 21 wherein the computer readable storage medium further comprises instructions that when executed by the first processor cause the client-side proxy device to:

fetch the first object from a content server;

store metadata comprising caching instructions which comprise validity data for the first object and communicating the first object to the client-side proxy in conjunction with storing the first object at the client-side proxy;

identify a prefetchable reference to the first object in a subsequent web page transaction including the client;

based on an identification of the prefetchable reference to the first object, send a first prefetch request for the first object using a third object validity check, wherein the third object validity check is based on the metadata;

receive the prefetched object valid response to the first prefetch request; and

communicate the prefetched object valid response to the client.

Assignments (12)
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 →
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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2017
From: LEPESKA, PETER; SEBASTIAN, WILLIAM B.
To: VIASAT,INC.
Reel/Frame 041508/0003 →
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 May 23, 2013
From: LEPESKA, PETER
To: VIASAT, INC.
Reel/Frame 030474/0136 →