IP Library Granted Patent US 7,941,609
Granted Patent B2
US 7,941,609 · App. 11/710,155 · Granted May 10, 2011

HTTP acceleration by prediction and pre-fetching

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,941,609
App. No.
11/710,155
Granted
May 10, 2011
Kind
B2
Abstract

Described is a technology by which high latency problems with respect to web requests are reduced by having a web proxy server predict and pre-fetch content, in parallel, that is to be requested by a client. The web proxy analyzes a main web page requested by a client to predict subsequent client requests. The web proxy pre-fetches content before the client requests it, by making concurrent requests for the page's embedded objects that exceed the client's limited number of (e.g., two) connections. In one example, the web proxy sends HTTP requests substantially in parallel to a web server, thereby reducing overall latency. In another example, the web proxy server sends parallel requests to a remote web proxy coupled to a web server. The remote web proxy requests only a limited number of objects (e.g., two) at a time, but does so over fast (low latency) connections to the web server.

Claims (25)

1. In a computing environment, a method comprising:

analyzing content described on a main web page to predict likely subsequent requests from a client for a plurality of objects corresponding to that content; and

pre-fetching at least some of the content before that content is requested by the client by making in parallel concurrent requests for objects described on the main web page independent of client requests for those objects, wherein pre-fetching at least some of the content comprises sending requests for objects to a web proxy coupled to a web server, and, the web proxy server coupled to the web server sends only two requests at a time to the web server independent of the number of outstanding requests received from the client.

2. The method of claim 1 wherein pre-fetching at least some of the content comprises sending HTTP requests for objects to a web server.

3. The method of claim 1 wherein pre-fetching at least some of the content comprises, receiving an object, and storing the object in a local storage or memory, and further comprising, returning the object from the local storage in response to a client request for the object.

4. The method of claim 3 wherein the object comprises a non-cacheable object, and further comprising, removing the object from the local storage or memory once requested by the client and returned to the client in response to the request.

5. The method of claim 3 wherein the object comprises a non-cacheable object, and further comprising, removing the object from the local storage when not requested by the client and in response to a removal triggering event.

6. The method of claim 1 wherein pre-fetching at least some of the content comprises, receiving an object, determining that the object is cacheable, and storing the object in a content cache.

7. In a computer networking environment, a system comprising:

a local web proxy server that receives requests from a client for content directed towards a web server, the local web proxy server analyzes the requests, sends HTTP requests to a web proxy server local to the web server, to pre-fetch at least some content objects from the web server in parallel and independent of client request for the objects, and returns objects to the client in response to client requests for those objects, wherein the web proxy server local to the web server sends only two HTTP requests at a time to the web server independent of the number of outstanding HTTP requests received from the local web proxy server.

8. The system of claim 7 wherein the local web proxy server pre-fetches at least some of the content including by sending HTTP requests for the objects to the web server.

9. The system of claim 7 wherein the local web proxy server pre-fetches at least some of the content by storing received objects in a local storage or memory for returning to the client in response to client requests for the objects.

10. The system of claim 7 wherein the local web proxy server differentiates between cacheable objects and non-cacheable objects, and wherein the local web proxy server removes any stored non-cacheable objects once requested by and returned to the client, or if not requested by the client when a removal event occurs.

11. A computer-readable storage medium having computer-executable instructions, comprising:

receiving a request from a client for web content corresponding to a main web page;

forwarding the request for handling via a corresponding web server;

receiving a response from the web server, the response including a list of embedded objects;

returning the response to the client;

requesting the embedded objects from a remote web proxy server independent of requests from the client for those embedded objects, wherein the remote web proxy server requests up to two of the embedded objects at a time from the web server;

receiving the embedded objects; and

returning the embedded objects in response to client requests for those embedded objects.

12. The computer-readable storage medium of claim 11 wherein requesting the embedded objects comprises requesting each embedded object before any embedded object is returned, and having further computer-executable instructions comprising, storing each embedded object when returned for returning to the client upon a client request for that object.

13. The computer-readable storage medium of claim 12 wherein storing each embedded object comprises, caching the embedded object if cacheable, or deleting the embedded object when not cacheable after returning the embedded object to the client.

14. The computer-readable storage medium of claim 13 having further computer-executable instructions comprising, caching the main web page, and returning the main web page or a cached embedded object from the cache in response to a subsequent request for that main web page or cached embedded object from a different client.

15. The computer-readable storage medium of claim 11 wherein requesting the embedded objects comprises creating web requests and sending the web requests to the web server independent of receiving server responses to the web requests.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2007
From: ALMOG, ITAI
To: MICROSOFT CORPORATION
Reel/Frame 019911/0248 →