IP Library Granted Patent US 7,343,396
Granted Patent B2
US 7,343,396 · App. 10/459,365 · Granted Mar 11, 2008

Precomputation of web documents

Assignee: Fineground Networks
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 7,343,396
App. No.
10/459,365
Granted
Mar 11, 2008
Kind
B2
Abstract

Techniques are disclosed for anticipating a user's request for documents or other content from a server (typically via a URL), precomputing the anticipated content, and caching the precomputed information at a cache in proximity to the content server. The cache stores the response to the anticipated request, until the user requests the same content. The anticipated requests can be precomputed based on triggers reflecting users' historical access patterns.

Claims (86)

1. A method for improving the efficiency of document presentation, the method comprising:

precomputing dynamic content anticipated to be requested by a particular user computer from a content server;

storing said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

intercepting, at said proxy server, a request from said user computer to said content server for a document expected to include said dynamic content;

determining a load on said content server, and prorating an amount of precomputation based upon said load;

using said precomputed dynamic content in responding to said request from said user computer; and

managing freshness of said precomputed dynamic content, said freshness determined by validity enforcement techniques.

2. The method of claim 1 , further comprising determining freshness based upon said validity enforcement techniques which include finding a difference between a moving average of a response time and a desired response time in retrieving a cache value, starting with an initial response time and determining exponential growth of this initial response time up to an optional preset time limit so long as said moving average of said response time exceeds a desired response time, setting a manual expiry time for a cache value, and using an expiration of a cache value on a message board as a basis to determine an expiry time.

3. The method of claim 2 , further comprising:

monitoring said load o a content server;and

prorating an amount of precomputation, said prorating occurring where a load on the content server is heavy.

4. The method of claim 1 , further comprising:

maintaining a record of identifiers of documents deemed likely to trigger subsequent requests for dynamic content; and

maintaining a record of identifiers of documents deemed likely to comprise follow-on requests associated with a triggering document.

5. The method of claim 4 , further comprising storing references, to at least some of said records, at said user computer.

6. The method of claim 4 , where said record of identifiers of document are specific to particular users.

7. The method of claim 4 , wherein said record of identifiers of documents deemed likely to trigger subsequent requests for dynamic content comprising a preexisting document.

8. The method of claim 4 , wherein said record of identifiers of documents deemed likely to trigger subsequent requests for dynamic content comprising documents that are newly computed.

9. The method of claim 1 , further comprising:

measuring a load on said content server; and

reducing precomputation during high load situations.

10. The method of claim 1 , wherein said precomputed dynamic content in responding to said user's request includes:

determining whether said request falls within a trigger class and, if so;

determining one or more associated document(s) from an anticipation class associated with said trigger class; and

storing said associated document(s) in said cache.

11. The method of claim 1 , further comprising repeating said method for another requested document.

12. The method of claim 1 , where said load is measured by at least one of comparing a response time of said content server with an absolute and predetermined desired response time, or by comparing a short term moving average of said content server with a long-term moving average of said response time.

13. A computer-readable medium for improving the efficiency of document presentation, comprising logic instructions that when executed:

precompute dynamic content anticipated to be requested by a particular user computer from a content server;

store said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

intercept, at said proxy server, a request from the user computer to said content server for a document expected to include said dynamic content;

determining a load on said content server, and prorating an amount of precomputation based upon said load;

use said precomputed dynamic content in responding to said request from said user computer; and

manage freshness of the precomputed dynamic content, the freshness determined by validity enforcement techniques.

14. The computer-readable medium of claim 13 , further comprising logic instructions that when executed determine freshness based upon said validity enforcement techniques which include finding a difference between a moving average of a response time and a desired response time in retrieving a cache value, starting with an initial response time and determining exponential growth of this initial response time up to an optional preset time limit so long as said moving average of said response time exceeds a desired response time, setting a manual expiry time for a cache value, and using an expiration of a cache value on a message board as a basis to determine an expiry time.

15. The computer-readable medium of claim 13 , further comprising logic instructions that when executed:

maintain a record of identifiers of documents deemed likely to trigger subsequent requests for dynamic content; and

maintain a record of identifiers of documents deemed likely to comprise follow-on requests associated with a triggering document.

16. The computer-readable medium of claim 13 , further comprising logic instructions that when executed:

measure a load on said content server; and

reduce said precomputation during high load situations.

17. The computer-readable medium of claim 13 , further comprising logic instructions that when executed:

determine whether said request falls within a trigger class, and, if so;

determine one or more associated document(s) from an anticipation class associated with said trigger class; and

store said associated document(s) in said cache.

18. Apparatus for improving the efficiency of document presentation, the apparatus comprising:

means for precomputing dynamic content anticipated to be requested by a particular user computer from a content server;

means for storing said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

means for intercepting, at said proxy server, a request from said user computer to said content server for a document expected to include said dynamic content;

means for determining a load on said content server, and prorating an amount of precomputation based upon said load;

means for using said precomputed dynamic content in responding to said request from said user computer; and

means for managing freshness of said precomputed dynamic content, the freshness determined by validity enforcement techniques.

19. A proxy server for improving the efficiency of document presentation from a content server to a user, comprising:

a computational module for precomputing dynamic content anticipated to be requested by a particular user computer from a content server;

a cache for storing said precomputed dynamic content anticipated to be requested by said user computer and to manage said freshness of the precomputed dynamic content via validity enforcement techniques; and

an interface connectable to said user computer and configured to:

intercept a request from said user computer to said content server for a document expected to include said dynamic content;

determine a load on said content server, and prorating an amount of precomputation based upon said load; and

serve said precomputed dynamic content to said user computer.

20. The proxy server of claim 19 , further comprising a data storage including:

a record of identifiers of documents deemed likely to trigger subsequent requests for dynamic content; and

a record of identifiers of documents deemed likely to comprise follow-on requests associated with a triggering document.

21. The proxy server of claim 19 , implemented as party of said content server.

22. A method for improving the efficiency of document presentation, the method comprising:

precomputing dynamic content anticipated to be requested by a particular user computer from a content server;

storing said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

intercepting, at said proxy server, a request from said user computer to said content server for a document expected to include said dynamic content;

using said precomputed dynamic content in responding to said request from said user computer;

managing freshness of said precomputed dynamic content, said freshness determined by validity enforcement techniques; and

determining freshness based upon said validity enforcement techniques which include finding a difference between a moving average of a response time and a desired response time in retrieving a cache value, starting with an initial response time and determining exponential growth of this initial response time up to an optional preset time limit so long as said moving average of said response time exceeds a desired response time, setting a manual expiry time for a cache value, and using an expiration of a cache value on a message board as a basis to determine an expiry time.

23. A computer-readable medium for improving the efficiency of document presentation, comprising logic instructions that when executed:

precompute dynamic content anticipated to be requested by a particular user computer from a content server;

store said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

intercept, at said proxy server, a request from the user computer to said content server for a document expected to include said dynamic content;

use said precomputed dynamic content in responding to said request from said user computer;

manage freshness of the precomputed dynamic content, the freshness determined by validity enforcement techniques; and

determine freshness based upon said validity enforcement techniques which include finding a difference between a moving average of a response time and a desired response time in retrieving a cache value, starting with an initial response time and determining exponential growth of this initial response time up to an optional preset time limit so long as said moving average of said response time exceeds a desired response time, setting a manual expiry time for a cache value, and using an expiration of a cache value on a message board as a basis to determine an expiry time.

24. A method for improving the efficiency of document presentation, the method comprising:

precomputing dynamic content anticipated to be requested by a particular user computer from a content server;

storing said precomputed dynamic content in a cache at a proxy server between said content server and said user computer;

intercepting, at said proxy server, a request from said user computer to said content server for a document expected to include said dynamic content;

using said precomputed dynamic content in responding to said request from said user computer;

managing freshness of said precomputed dynamic content, said freshness determined by validity enforcement techniques;

determining freshness based upon said validity enforcement techniques which include finding a difference between a moving average of a response time and a desired response time in retrieving a cache value, starting with an initial response time and determining exponential growth of this initial response time up to an optional preset time limit so long as said moving average of said response time exceeds a desired response time, setting a manual expiry time for a cache value, and using an expiration of a cache value on a message board as a basis to determine an expiry time;

monitoring said load of a content server; and

prorating an amount of precomputation, said prorating occurring where a load on the content server is heavy.

Assignments (4)
CHANGE OF NAME Recorded Sep 2, 2009
From: FINEGROUND NETWORKS, INC.
To: FINEGROUND NETWORKS LLC
Reel/Frame 023180/0323 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2009
From: FINEGROUND NETWORKS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 023180/0327 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME, PREVIOUSLY RECORDED ON REEL 015837 FRAME 0227. Recorded May 7, 2009
From: KAUSIK, BALAS NATARAJAN; JAWAHAR, JANARDHANAN
To: FINEGROUND NETWORKS, INC.
Reel/Frame 022659/0403 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2004
From: KAUSIK, BALAS NATARAJAN; JAWABAR, JANARDHANAN
To: FINEGROUND NETWORKS
Reel/Frame 015837/0227 →
Continuity (2)
Provisional Application 6039065100 · Jun 20, 2002
Related Publication 20040073867A1 · Apr 15, 2004