Accelerating connections to a host server
In anticipation of a client device establishing a connection over a network with a remote host service, a pre-connect module generates a connection request (referred to herein as a “pre-connect request”) on behalf of the client device and sends the pre-connect request to the remote host server. The remote server responds with a connection response (referred to herein as a “pre-connect response”), which is pre-positioned on the client-side of the network along with information for generating a later connection request that is in material respects the same as the pre-connect request. Then, when the client device later seeks to establish a connection with the remote host server, the client device determines whether it has in local storage generation information for generating a connection request to the remote host server. If so, the client device uses the generation information to generate a connection request that is in material respects the same as the pre-connect request. An interceptor on the client-side of the network intercepts connection requests and determines whether a corresponding pre-connect response is locally stored. If so, the interceptor sends the locally stored pre-connect response as a complete response to the intercepted request, which can be discarded.
1 . A method of accelerating setup of a persistent connection over a network between a client device and a remote host server, where establishing the connection requires a connection request by the client device and a corresponding connection response by the remote host server, the method comprising:
generating, by a pre-connect module on a server-side of the network, a pre-connect request on behalf of the client device;
sending the pre-connect request to the remote host server;
receiving, at the pre-connect module, a pre-connect response from the remote host server in response to the pre-connect request; and
prepositioning the pre-connect response on a client-side of the network.
2 . The method of claim 1 , wherein the pre-connect request mimics an actual connection request by the client device.
3 . The method of claim 2 , wherein:
the pre-connect request comprises an identifier identifying the client device as the requestor, and
the pre-connect response is addressed to the client device.
4 . The method of claim 1 , wherein the pre-connect request is a request for a secure connection with the remote host server.
5 . The method of claim 3 further comprising sending to the client-side of the network generation information indicating how to generate the pre-connect request.
6 . The method of claim 1 , wherein the prepositioning is performed before receiving, at the pre-connect module, an actual connection request generated by the client device for a connection with the remote host server.
7 . The method of claim 1 , wherein the network includes a satellite link between the client device and the remote host server.
8 . The method of claim 1 , wherein generating a pre-connect request is performed in response to a trigger indicating that the client device is expected to execute a network transaction comprising fetching a resource from the remote host server.
9 . The method of claim 8 , wherein:
the client device comprises a web browser,
the network transaction comprises the web browser rendering a web page, and
the web page comprises an instruction to fetch the resource from the remote host server.
10 . The method of claim 9 , wherein:
the web page is stored on a web server located on the server side of the network, and
the host server is different than the web server.
11 . An apparatus, disposed on a server-side of a communications network, for accelerating setup of a persistent connection over the network between a client device and a remote host server, where establishing the connection requires a connection request by the client device and a corresponding connection response by the remote host server, the apparatus comprising:
processor circuitry; and
digital storage having stored therein non-transient instructions that cause the processor circuitry to perform a method comprising:
generating a pre-connect request on behalf of the client device;
sending the pre-connect request to the remote host server;
receiving a pre-connect response from the remote host server in response to the pre-connect request; and
prepositioning the pre-connect response on a client-side of the network.
12 . The apparatus of claim 11 , wherein the pre-connect request mimics an actual connection request by the client device.
13 . The apparatus of claim 12 , wherein:
the pre-connect request comprises an identifier identifying the client device as the requestor, and
the pre-connect response is addressed to the client device.
14 . The apparatus of claim 11 , wherein the pre-connect request is a request for a secure connection with the remote host server.
15 . The apparatus of claim 13 , wherein the method further comprises sending to the client-side of the network generation information indicating how to generate the pre-connect request.
16 . The apparatus of claim 11 , wherein the prepositioning is performed before receiving an actual connection request generated by the client device for a connection with the remote host server.
17 . The apparatus of claim 11 , wherein the network includes a satellite link between the client device and the remote host server.
18 . The apparatus of claim 11 , wherein generating a pre-connect request is performed in response to a trigger indicating that the client device is expected to execute a network transaction comprising fetching a resource from the remote host server.
19 . The apparatus of claim 18 , wherein:
the client device comprises a web browser,
the network transaction comprises the web browser rendering a web page, and
the web page comprises an instruction to fetch the resource from the remote host server.
20 . The apparatus of claim 19 , wherein:
the web page is stored on a web server located on the server side of the network, and
the host server is different than the web server.