Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
5754774
Bittinger , ; et al.
May 19, 1998
Title
Client/server communication system
Abstract
A method, apparatus and program product for increasing the performance of a client/server system having a client application resident on a first computer and communicating with a server application resident on a second computer remote from the first computer. The client application and the server application utilize a client/server independent communication protocol for communication between the client and the server and at least one segment of the communication between the client application in the first computer and the server application in the second computer occurs over an external communication link. The method, apparatus and program product intercept communications in the client/server independent communication protocol originated by the remote client prior to transmission of the communications on the external communication link and convert the communication originated by the client to a second client/server specific communication protocol. The converted communication is transmitted over the external communication link and received from the communication transmitted over the external communication link. The communication received over the external communication link is converted from the client server specific communication protocol to the client/server independent communication protocol and the communication originated by the remote client is provided to the server in the client/server independent communication protocol. Differencing, caching or protocol reduction techniques increase performance over the external communication link. The applications may be a web browser and a web server and may communicate over a wireless communication link.
Inventors:
Bittinger; Reed Richard
(Raleigh,
NC
)
, Fraenkel; Michael Levi
(Raleigh,
NC
)
, Housel, III; Barron Cornelius
(Chapel Hill,
NC
)
, Lindquist; David Bruce
(Raleigh,
NC
)
Assignee:
International Business Machine Corp.
(Armonk,
NY
)
Appl. No.:
601804
Filed:
February 15, 1996
Current U.S. Class:
709/203
Current International Class:
H04L 29/06 (20060101)
Field of Search:
364/DIG.1MSFile,DIG.2MSFile 370/47.1,331,312,389,204 380/24 395/683,200.61,200.3,200.32,200.33,200.38,200.47,200.49,200.63,200.66
U.S. Patent Documents
4438511
March 1984
Baran
4893307
January 1990
McKay et al.
5021949
June 1991
Morten et al.
5220501
June 1993
Lawlor et al.
5412654
May 1995
Perkins et al.
5442633
August 1995
Perkins et al.
5448561
September 1995
Kaiser et al.
5481721
January 1996
Serlet et al.
Other References
Hyptertext Transfer Protocol--HTTP/1.0, HTTP Working Group, Berners-Lee et al-Internet-Draft Basic HTTP. .
IBM Sales Brochure G325-3598-0 printed Sep.-95. .
IBM Sales Brochure G325-3595-00, printed Sep.-95. .
IBM ARTout Technical Overview-Release 1. .
IBM Publication SB14-0110-00, 1995..~
Primary Examiner:
Harrell; Robert B.
Attorney, Agent or Firm:
Herndon; Jerry W.
Claims
That which is claimed is:
1. A method of increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, the method comprising the following steps:
intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol;
transmitting the converted web browser originated communication to the second computer over the external communication link as a client/server specific data stream;
receiving the client/server specific data stream transmitted over the external communication link;
reconstructing the HTTP data stream corresponding to the communication from the web browser from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
providing the communication originated by the web browser to the web server as an HTTP data stream.
2. A method according to claim 1 further comprising the following steps of:
storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
wherein the following step is substituted for said converting, transmitting, receiving, reconstructing and providing steps if a client cache entry exists corresponding to the web browser originated communication:
supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
3. A method according to claim 2 wherein said storing step further comprises the step of storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said interrogating step further comprises the step of evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said providing step comprises providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if said determining step determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
4. The method of claim 3 further comprising the steps of:
storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
evaluating the web browser originated communication to determine if a server request cache entry corresponding to the web browser originated communication exists; and
converting the server request cache entry corresponding to the browser originated communication to a client/server specific communication protocol;
sending the server request cache entry to the first computer over the external communication link by transmitting on the external communication link a client/server specific data stream;
acquiring the client/server specific data stream sent over the external communication link by the second computer;
wherein said reconstructing step comprises reconstructing the HTTP data stream corresponding to server cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
wherein said providing step comprises transferring the server request cache entry corresponding to the information requested by the web browser to the web browser as an HTTP data stream.
5. The method of claim 4 further comprising the steps of:
determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said converting step comprises transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said determining step determines that the server request cache entry was created within the predetermined client coherency time interval.
6. The method according to claim 4 further comprising the steps of:
determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said converting step comprises calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data;
wherein said sending step comprises transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link;
wherein said reconstructing step comprises updating the client cache entry time record corresponding to the web browser originated communication by subtracting from the current time of the first computer the entry age data received from the coherent entry response; and
wherein said providing step comprises transferring the HTTP data stream stored as the client cache entry corresponding to the web browser originated communication to the web browser as an HTTP data stream if a coherent entry response is received from the external communication link.
7. A method according to claim 3 further comprising the step of maintaining client cache entries across multiple instances of the web browser.
8. A method according to claim 1 further comprising the steps of:
capturing the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol;
sending the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream;
acquiring the client/server specific data stream transmitted over the external communication link;
rebuilding the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
furnishing the communication originated by the web server to the web browser as an HTTP data stream.
9. The method of claim 8 further comprising the steps of:
establishing a persistent connection between the first computer and the second computer over the external communication link;
maintaining the persistent connection until all web server originated communications are completed; and
wherein said capturing step comprises intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
10. The method of claim 9:
wherein said rebuilding step comprises demultiplexing the client/server specific data stream to create a plurality of HTTP data streams; and
wherein said furnishing step comprises providing said plurality of HTTP data streams to the web server.
11. The method according to claim 8 further comprising the step of:
providing to the first computer over the external communication link computer specific information corresponding to predefined characteristics of the second computer;
storing the computer specific information corresponding to the predefined characteristics of the second computer to provide server header information;
wherein said converting step comprises the step of removing the computer specific information from the web server originated communication; and
wherein said rebuilding step comprises combining the server header information with the client/server specific data stream to create an HTTP data stream.
12. The method of claim 1 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said method further comprising the steps of:
interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form;
sending the CGI difference data to the web browser to the first computer over the external communication link as a client/server specific data stream;
acquiring the client/server specific data stream transmitted over the external communication link sent by the second computer;
wherein said reconstructing step comprises reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
wherein said providing step comprises providing the communication originated by the web server to the web browser as an HTTP data stream.
13. The method of claim 12 further comprises the steps of:
determining if the server CGI base form is identical to the client CGI base form;
wherein said sending step comprises transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream;
wherein said reconstructing step comprises reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the server CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
14. The method of claim 12 further comprising the steps of:
determining if the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold;
updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if the CGI difference data; and
wherein said comparing step and said sending step utilizes the updated server CGI base form.
15. A method according to claim 1 further comprising the steps of:
storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored;
wherein said providing step comprises providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said interrogating step determines that the web browser communication corresponds to a request for which user defined information is stored; and
wherein said interrogating step is substituted for said transmitting, said receiving, and said reconstructing steps if the user defined stored information is provided to the web browser.
16. A method according to claim 15 further comprising the step of receiving the user defined information from the first computer across the communication link.
17. The method of claim 1 further comprising the steps of:
establishing a persistent connection between the first computer and the second computer over the external communication link;
maintaining the persistent connection until all web browser originated communications are completed; and
wherein said intercepting step comprises intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
18. The method of claim 17:
wherein said reconstructing step comprises demultiplexing the client/server specific data stream to create a plurality of HTTP data streams; and
wherein said providing step comprises providing said plurality of HTTP data streams to the web server.
19. A method according to claim 1 wherein said transmitting step further comprises the step of transmitting the converted web browser originated communication over a wireless communication link.
20. The method of claim 1 further comprising the steps of:
storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol;
sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream;
acquiring the client/server specific data stream transmitted over the external communication link;
wherein said reconstructing step comprises reconstructing the HTTP data stream corresponding to the server request cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
wherein said providing step comprises providing the server request cache entry to the information requested by the web browser to the web browser as an HTTP data stream.
21. The method according to claim 1 further comprising the step of:
providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer;
storing the computer specific information corresponding to the predefined characteristics of the first computer to provide browser header information;
wherein said transforming step comprises the step of removing the computer specific information from the web browser originated communication; and
wherein said reconstructing step comprises combining the browser header information with the client/server specific data stream to create an HTTP data stream.
22. A method of increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, the method comprising the following steps:
intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol; and
transmitting the converted web browser originated communication to the web server over the external communication link as a client/server specific data stream.
23. A method according to claim 22 further comprising the following steps of:
storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
wherein the following step is substituted for said converting and said transmitting, steps if a client cache entry exists corresponding to the web browser originated communication:
supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
24. A method according to claim 23 wherein said storing step further comprises the step of storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said interrogating step further comprises the step of evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said supplying step comprises providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if said determining step determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
25. A method according to claim 24 further comprising the step of maintaining client cache entries across multiple instances of the web browser.
26. A method according to claim 22 further comprising the steps of:
storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored; and
providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said interrogating step determines that the web browser communication corresponds to a request for which user defined information is stored; and
wherein said interrogating step and said providing step are substituted for said transmitting step if the user defined stored information is provided to the web browser.
27. A method according to claim 26 further comprising the step of receiving the user defined information from the first computer across the communication link.
28. The method of claim 22 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said method further comprising the steps of:
interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with CGI difference data received over the external communication link to create an HTTP data stream; and
providing the communication originated by the web server to the web browser as an HTTP data stream.
29. The method of claim 28 further comprising the steps of:
wherein said reconstructing step comprises reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the a server CGI base form received over the external communication link with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
30. The method of claim 22 further comprising the steps of:
establishing a persistent connection between the first computer and the second computer over the external communication link;
maintaining the persistent connection until all web browser originated communications are completed; and
wherein said intercepting step comprises intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
31. The method of claim 30 further comprising the steps of:
receiving a client/server specific data stream over the external communication link from the second computer;
demultiplexing the client/server specific data stream to create a plurality of HTTP data streams to provide the plurality of HTTP data streams to the web browser; and
providing the plurality of HTTP data streams to the web browser.
32. A method according to claim 22 wherein said transmitting step further comprises the step of transmitting the converted web browser originated communication over a wireless communication link.
33. The method according to claim 22 further comprising the step of:
providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer; and
wherein said transforming step comprises the step of removing the computer specific information from the web browser originated communication.
34. An apparatus for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, the apparatus comprising:
means for intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
means for converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol;
means for transmitting the converted web browser originated communication to the second computer over the external communication link as a client/server specific data stream;
means for receiving the client/server specific data stream transmitted over the external communication link;
means for reconstructing the HTTP data stream corresponding to the communication from the web browser from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
means for providing the communication originated by the web browser to the web server as an HTTP data stream.
35. An apparatus according to claim 34 wherein said means for storing further comprises means for storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said means for interrogating further comprises means for evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said means for providing comprises means for providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if said means for determining determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
36. An apparatus according to claim 35 further comprising:
means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
means for evaluating the web browser originated communication to determine if a server request cache entry corresponding to the web browser originated communication exists; and
means for converting the server request cache entry corresponding to the browser originated communication to a client/server specific communication protocol;
means for sending the server request cache entry to the first computer over the external communication link by transmitting on the external communication link a client/server specific data stream;
means for acquiring the client/server specific data stream sent over the external communication link by the second computer;
wherein said means for reconstructing comprises means for reconstructing the HTTP data stream corresponding to server cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
wherein said means for providing comprises means for transferring the server request cache entry corresponding to the information requested by the web browser to the web browser as an HTTP data stream.
37. An apparatus according to claim 36 further comprising:
means for determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said means for converting comprises means for transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said means for determining determines that the server request cache entry was created within the predetermined client coherency time interval.
38. An apparatus according to claim 36 further comprising:
means for determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said means for converting comprises means for calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data;
wherein said means for sending comprises means for transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link;
wherein said means for reconstructing comprises means for updating the client cache entry time record corresponding to the web browser originated communication by subtracting from the current time of the first computer the entry age data received from the coherent entry response; and
wherein said means for providing comprises means for transferring the HTTP data stream stored as the client cache entry corresponding to the web browser originated communication to the web browser as an HTTP data stream if a coherent entry response is received from the external communication link.
39. An apparatus according to claim 35 further comprising means for maintaining client cache entries across multiple instances of the web browser.
40. An apparatus according to claim 34 further comprising:
means for capturing the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
means for converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol;
means for sending the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream;
means for acquiring the client/server specific data stream transmitted over the external communication link;
means for rebuilding the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
means for furnishing the communication originated by the web server to the web browser as an HTTP data stream.
41. An apparatus according to claim 40 further comprising:
means for establishing a persistent connection between the first computer and the second computer over the external communication link;
means for maintaining the persistent connection until all web server originated communications are completed; and
wherein said means for capturing comprises means for intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
42. An apparatus according to claim 41 wherein said means for rebuilding comprises means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams, and wherein said means for furnishing comprises means for providing said plurality of HTTP data streams to the web server.
43. An apparatus according to claim 40 further comprising:
means for providing to the first computer over the external communication link computer specific information corresponding to predefined characteristics of the second computer;
means for storing the computer specific information corresponding to the predefined characteristics of the second computer to provide server header information;
wherein said means for converting comprises means for removing the computer specific information from the web server originated communication; and
wherein said means for rebuilding comprises means for combining the server header information with the client/server specific data stream to create an HTTP data stream.
44. An apparatus according to claim 34 wherein the intercepted web browser originated communication is an intercepted CGI request further comprising:
means for interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
means for interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
means for storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
means for storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
means for intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
means for comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form;
means for sending the CGI difference data to the web browser to the first computer over the external communication link as a client/server specific data stream;
means for acquiring the client/server specific data stream transmitted over the external communication link sent by the second computer;
wherein said means for reconstructing comprises means for reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
wherein said means for providing comprises means for providing the communication originated by the web server to the web browser as an HTTP data stream.
45. An apparatus according to claim 44 further comprising:
means for determining if the server CGI base form is identical to the client CGI base form;
wherein said means for sending comprises means for transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream;
wherein said means for reconstructing comprises means for reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the server CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
means for updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
46. An apparatus according to claim 45 further comprising:
means for determining if the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold;
means for updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if said determining means determines that the difference between the server CGI base form and the CGI response is greater than the predefined difference threshold; and
wherein said means for comparing and said means for sending utilize the updated server CGI base form.
47. An apparatus according to claim 34 further comprising:
means for storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
means for interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
means for supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
48. An apparatus according to claim 47 further comprising means for receiving the user defined information from the first computer across the communication link.
49. An apparatus according to claim 34 further comprising:
means for establishing a persistent connection between the first computer and the second computer over the external communication link;
means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said means for intercepting comprises means for intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
50. An apparatus according to claim 49 wherein said means for reconstructing comprises means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams and wherein said means for providing comprises means for providing said plurality of HTTP data streams to the web server.
51. An apparatus according to claim 34 wherein said means for transmitting further comprises means for transmitting the converted web browser originated communication over a wireless communication link.
52. An apparatus according to claim 34 further comprising:
storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
means for interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored; and
wherein said means for providing comprises means for providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said means for interrogating determines that the web browser communication corresponds to a request for which user defined information is stored.
53. An apparatus according to claim 34 further comprising:
means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
means for interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
means for transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol;
means for sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream;
means for acquiring the client/server specific data stream transmitted over the external communication link;
wherein said means for reconstructing comprises means for reconstructing the HTTP data stream corresponding to the server request cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream ; and
wherein said means for providing comprises means for providing the server request cache entry to the information requested by the web browser to the web browser as an HTTP data stream.
54. An apparatus according to claim 34 further comprising:
means for providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer;
means for storing the computer specific information corresponding to the predefined characteristics of the first computer to provide browser header information;
wherein said means for transforming comprises means for removing the computer specific information from the web browser originated communication; and
wherein said means for reconstructing comprises means for combining the browser header information with the client/server specific data stream to create an HTTP data stream.
55. A computer program product for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link comprising:
computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising:
computer-readable program code means for intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol;
computer readable program code means for transmitting the converted web browser originated communication to the second computer over the external communication-link as a client/server specific data stream;
computer readable program code means for receiving the client/server specific data stream transmitted over the external communication link;
computer readable program code means for reconstructing the HTTP data stream corresponding to the communication from the web browser from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
computer readable program code means for providing the communication originated by the web browser to the web server as an HTTP data stream.
56. A computer program product according to claim 55 wherein said computer readable program code means for storing further comprises computer readable program code means for storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said computer readable program code means for interrogating further comprises computer readable program code means for evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said computer readable program code means for providing comprises computer readable program code means for providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if said computer readable program code means for determining determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
57. A computer program product according to claim 56 further comprising:
computer readable program code means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
computer readable program code means for evaluating the web browser originated communication to determine if a server request cache entry corresponding to the web browser originated communication exists; and
computer readable program code means for converting the server request cache entry corresponding to the browser originated communication to a client/server specific communication protocol;
computer readable program code means for sending the server request cache entry to the first computer over the external communication link by transmitting on the external communication link a client/server specific data stream;
computer readable program code means for acquiring the client/server specific data stream sent over the external communication link by the second computer;
wherein said computer readable program code means for reconstructing comprises computer readable program code means for reconstructing the HTTP data stream corresponding to server cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
wherein said computer readable program code means for providing comprises computer readable program code means for transferring the server request cache entry corresponding to the information requested by the web browser to the web browser as an HTTP data stream.
58. A computer program product according to claim 57 further comprising:
computer readable program code means for determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said computer readable program code means for converting comprises computer readable program code means for transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said computer readable program code means for determining determines that the server request cache entry was created within the predetermined client coherency time interval.
59. A computer program product according to claim 57 further comprising:
computer readable program code means for determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said computer readable program code means for converting comprises computer readable program code means for calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data;
wherein said computer readable program code means for sending comprises computer readable program code means for transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link;
wherein said computer readable program code means for reconstructing comprises computer readable program code means for updating the client cache entry time record corresponding to the web browser originated communication by subtracting from the current time of the first computer the entry age data received from the coherent entry response; and
wherein said computer readable program code means for providing comprises computer readable program code means for transferring the HTTP data stream stored as the client cache entry corresponding to the web browser originated communication to the web browser as an HTTP data stream if a coherent entry response is received from the external communication link.
60. A computer program product according to claim 56 further comprising computer readable program code means for maintaining client cache entries across multiple instances of the web browser.
61. A computer program product according to claim 55 further comprising:
computer readable program code means for capturing the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol;
computer readable program code means for sending the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream;
computer readable program code means for acquiring the client/server specific data stream transmitted over the external communication link;
computer readable program code means for rebuilding the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
computer readable program code means for furnishing the communication originated by the web server to the web browser as an HTTP data stream.
62. A computer program product according to claim 61 further comprising:
computer readable program code means for establishing a persistent connection between the first computer and the second computer over the external communication link;
computer readable program code means for maintaining the persistent connection until all web server originated communications are completed; and
wherein said computer readable program code means for capturing comprises computer readable program code means for intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
63. A computer program product according to claim 62 wherein said computer readable program code means for rebuilding comprises computer readable program code means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams, and wherein said computer readable program code means for furnishing comprises computer readable program code means for providing said plurality of HTTP data streams to the web server.
64. A computer program product according to claim 61 further comprising:
computer readable program code means for providing to the first computer over the external communication link computer specific information corresponding to predefined characteristics of the second computer;
computer readable program code means for storing the computer specific information corresponding to the predefined characteristics of the second computer to provide server header information;
wherein said computer readable program code means for converting comprises computer readable program code means for removing the computer specific information from the web server originated communication; and
wherein said computer readable program code means for rebuilding comprises computer readable program code means for combining the server header information with the client/server specific data stream to create an HTTP data stream.
65. A computer program product according to claim 55 wherein the intercepted web browser originated communication is an intercepted CGI request further comprising:
computer readable program code means for interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
computer readable program code means for interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
computer readable program code means for storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
computer readable program code means for storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
computer readable program code means for intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form;
computer readable program code means for sending the CGI difference data to the web browser to the first computer over the external communication link as a client/server specific data stream;
computer readable program code means for acquiring the client/server specific data stream transmitted over the external communication link sent by the second computer;
wherein said computer readable program code means for reconstructing comprises computer readable program code means for reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
wherein said computer readable program code means for providing comprises computer readable program code means for providing the communication originated by the web server to the web browser as an HTTP data stream.
66. A computer program product according to claim 65 further comprising:
computer readable program code means for determining if the server CGI base form is identical to the client CGI base form;
wherein said computer readable program code means for sending comprises computer readable program code means for transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream;
wherein said computer readable program code means for reconstructing comprises computer readable program code means for reconstructing the HTTP data stream corresponding to the communication from the web server from the client/server specific data stream received over the external communication link by combining the server CGI base form with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
computer readable program code means for updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
67. A computer program product according to claim 66 further comprising:
computer readable program code means for determining if the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold;
computer readable program code means for updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if said determining computer readable program code means determines that the difference between the server CGI base form and the CGI response is greater than the predefined difference threshold; and
wherein said computer readable program code means for comparing and said computer readable program code means for sending utilize the updated server CGI base form.
68. A computer program product according to claim 55 further comprising:
storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
computer readable program code means for interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored; and
wherein said computer readable program code means for providing comprises computer readable program code means for providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said computer readable program code means for interrogating determines that the web browser communication corresponds to a request for which user defined information is stored.
69. A computer program product according to claim 68 further comprising computer readable program code means for receiving the user defined information from the first computer across the communication link.
70. A computer program product according to claim 55 further comprising:
computer readable program code means for establishing a persistent connection between the first computer and the second computer over the external communication link;
computer readable program code means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said computer readable program code means for intercepting comprises computer readable program code means for intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
71. A computer program product according to claim 70 wherein said computer readable program code means for reconstructing comprises computer readable program code means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams and wherein said computer readable program code means for providing comprises computer readable program code means for providing said plurality of HTTP data streams to the web server.
72. A computer program product according to claim 55 wherein said computer readable program code means for transmitting further comprises computer readable program code means for transmitting the converted web browser originated communication over a wireless communication link.
73. A computer program product according to claim 55 further comprising:
computer readable program code means for storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
computer readable program code means for interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
computer readable program code means for supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
74. A computer program product according to claim 55 further comprising:
computer readable program code means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
computer readable program code means for interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
computer readable program code means for transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol;
computer readable program code means for sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream;
computer readable program code means for acquiring the client/server specific data stream transmitted over the external communication link;
wherein said computer readable program code means for reconstructing comprises computer readable program code means for reconstructing the HTTP data stream corresponding to the server request cache entry from the client/server specific data stream received over the external communication link by converting the client/server specific data stream received in the client/server specific communication protocol to an HTTP data stream; and
wherein said computer readable program code means for providing comprises computer readable program code means for providing the server request cache entry to the information requested by the web browser to the web browser as an HTTP data stream.
75. A computer program product according to claim 55 further comprising:
computer readable program code means for providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer;
computer readable program code means for storing the computer specific information corresponding to the predefined characteristics of the first computer to provide browser header information;
wherein said computer readable program code means for transforming comprises computer readable program code means for removing the computer specific information from the web browser originated communication; and
wherein said computer readable program code means for reconstructing comprises computer readable program code means for combining the browser header information with the client/server specific data stream to create an HTTP data stream.
76. An apparatus for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, comprising:
means for intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
means for converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol; and
means for transmitting the converted web browser originated communication to the web server over the external communication link as a client/server specific data stream.
77. An apparatus according to claim 76 further comprising:
means for storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
means for interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
means for supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
78. An apparatus according to claim 77 wherein said means for storing further comprises means for storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said means for interrogating further comprises means for evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said means for supplying comprises means for providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if means for determining determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
79. An apparatus according to claim 78 further comprising means for maintaining client cache entries across multiple instances of the web browser.
80. An apparatus according to claim 76 further comprising:
means for storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
means for interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored; and
means for providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said means for interrogating determines that the web browser communication corresponds to a request for which user defined information is stored.
81. An apparatus according to claim 80 further comprising means for receiving the user defined information from the first computer across the communication link.
82. An apparatus according to claim 76 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said apparatus further comprising:
means for interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
means for storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
means for reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with CGI difference data received over the external communication link to create an HTTP data stream; and
means for providing the communication originated by the web server to the web browser as an HTTP data stream.
83. An apparatus according to claim 82 further comprising:
wherein said means for reconstructing comprises means for reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the a server CGI base form received over the external communication link with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
means for updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
84. An apparatus according to claim 76 further comprising:
means for establishing a persistent connection between the first computer and the second computer over the external communication link;
means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said means for intercepting comprises means for intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
85. An apparatus according to claim 84 further comprising:
means for receiving a client/server specific data stream over the external communication link from the second computer;
means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams to provide the plurality of HTTP data streams to the web browser; and
means for providing the plurality of HTTP data streams to the web browser.
86. An apparatus according to claim 76 wherein said means for transmitting comprises means for transmitting the converted web browser originated communication over a wireless communication link.
87. An apparatus according to claim 76 further comprising:
means for providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer; and
wherein said means for transforming comprises means for removing the computer specific information from the web browser originated communication.
88. A computer program product for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, comprising:
computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising:
computer readable program code means for intercepting the HTTP data stream corresponding to a communication originated by the web browser prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for converting the HTTP data stream originated by the web browser from the HTTP protocol to a client/server specific communication protocol; and
computer readable program code means for transmitting the converted web browser originated communication to the web server over the external communication link as a client/server specific data stream.
89. A computer program product according to claim 88 further comprising:
computer readable program code means for storing an HTTP data stream to be received by the web browser in response to a web browser originated communication with the web server in a cache resident in the first computer to create a client cache entry corresponding to the web browser originated communication with the web server;
computer readable program code means for interrogating the web browser originated communication to determine if a client cache entry exists corresponding to the web browser originated communication; and
computer readable program code means for supplying the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication.
90. A computer program product according to claim 89 wherein said computer readable program code means for storing further comprises computer readable program code means for storing the time of creation of a client cache entry to create a client cache entry time record;
wherein said computer readable program code means for interrogating further comprises computer readable program code means for evaluating the client cache entry time record to determine if the client cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the web browser requesting the information; and
wherein said computer readable program code means for supplying comprises computer readable program code means for providing the client cache entry to the web browser as an HTTP data stream in response to the web browser originated communication if computer readable program code means for determining determines that a client cache entry was created within a predetermined client coherency time interval prior to the web browser requesting the information.
91. A computer program product according to claim 90 further comprising computer readable program code means for maintaining client cache entries across multiple instances of the web browser.
92. A computer program product according to claim 88 further comprising:
computer readable program code means for storing user defined information associated with a specific web browser information request so as to provide the user defined information resident in the first computer;
computer readable program code means for interrogating the web browser originated communication to determine if the information requested by the web browser corresponds to a request for which user defined information is stored; and
computer readable program code means for providing the user defined stored information to the web browser as an HTTP data stream in response to the web browser originated communication if said computer readable program code means for interrogating determines that the web browser communication corresponds to a request for which user defined information is stored.
93. A computer program product according to claim 92 further comprising computer readable program code means for receiving the user defined information from the first computer across the communication link.
94. A computer program product according to claim 88 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said computer program product further comprising:
computer readable program code means for interrogating the intercepted CGI request to determine if a client base cache entry corresponding to the intercepted CGI request exists to provide a client CGI base form;
computer readable program code means for storing a HTTP data stream to be provided to the web browser in response to a browser originated communication which is a request to a CGI in a cache resident in the first computer to create a client base cache entry;
computer readable program code means for reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the client CGI base form with CGI difference data received over the external communication link to create an HTTP data stream; and
computer readable program code means for providing the communication originated by the web server to the web browser as an HTTP data stream.
95. A computer program product according to claim 94 further comprising:
wherein said means for reconstructing comprises computer readable program code means for reconstructing the HTTP data stream corresponding to a communication from the web server from the client/server specific data stream received over the external communication link by combining the a server CGI base form received over the external communication link with the CGI difference data received over the external communication link to create an HTTP data stream corresponding to the intercepted CGI response; and
computer readable program code means for updating the client CGI base form corresponding to the CGI request by storing the received server CGI base form as the client base cache entry corresponding to the CGI request.
96. A computer program product according to claim 88 further comprising:
computer program code means for establishing a persistent connection between the first computer and the second computer over the external communication link;
computer readable program code means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said computer readable program code means for intercepting comprises computer readable program code means for intercepting a plurality of web browser originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
97. A computer program product according to claim 96 further comprising:
computer readable program code means for receiving a client/server specific data stream over the external communication link from the second computer;
computer readable program code means for demultiplexing the client/server specific data stream to create a plurality of HTTP data streams to provide the plurality of HTTP data streams to the web browser; and
computer readable program code means for providing the plurality of HTTP data streams to the web browser.
98. A computer program product according to claim 88 wherein said computer readable program code means for transmitting comprises computer readable program code means for transmitting the converted web browser originated communication over a wireless communication link.
99. A computer program product according to claim 88 further comprising:
computer readable program code means for providing to the second computer over the external communication link computer specific information corresponding to predefined characteristics of the first computer; and
wherein said computer readable program code means for transforming comprises computer readable program code means for removing the computer specific information from the web browser originated communication.
100. A method of increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, the method comprising the following steps:
intercepting the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol; and
transmitting the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream.
101. The method of claim 100 further comprising the steps of:
storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
wherein said converting step comprises transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol; and
wherein said transmitting step comprises sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream.
102. The method of claim 101 further comprising the steps of:
determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said transforming step comprises transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said determining step determines that the server request cache entry was created with the predetermined client coherency time interval.
103. The method according to claim 101 further comprising the steps of:
determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said transforming step comprises calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data; and
wherein said transmitting step comprises transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link.
104. The method of claim 100 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said method further comprising the steps of:
interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
wherein said intercepting step comprises intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form; and
wherein said transmitting step comprises sending the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
105. The method of claim 104 further comprises the steps of:
determining if the server CGI base form is identical to a client CGI base form corresponding to the CGI request; and
wherein said sending step comprises transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
106. The method of claim 104 further comprising the steps of:
determining if the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold;
updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if the CGI difference data; and
wherein said comparing step and said sending step utilizes the updated server CGI base form.
107. The method of claim 100 further comprising the steps of:
establishing a persistent connection between the first computer and the second computer over the external communication link;
maintaining the persistent connection until all web browser originated communications are completed; and
wherein said intercepting step comprises intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
108. An apparatus for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link, the apparatus comprising:
means for intercepting the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
means for converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol; and
means for transmitting the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream.
109. An apparatus according to claim 108 further comprising:
means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
means for interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
wherein said means for converting comprises means for transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol; and
wherein said means for transmitting comprises means for sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream.
110. An apparatus according to claim 109 further comprising:
means for determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said means for transforming comprises means for transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said means for determining determines that the server request cache entry was created with the predetermined client coherency time interval.
111. An apparatus according to claim 109 further comprising:
means for determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said means for transforming comprises means for calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data; and
wherein said means for transmitting comprises means for transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link.
112. An apparatus according to claim 108 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said apparatus further comprising:
means for interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
means for storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
wherein said means for intercepting comprises intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
means for comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form; and
wherein said means for transmitting comprises means for sending the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
113. An apparatus according to claim 112 further comprising:
means for determining if the server CGI base form is identical to a client CGI base form corresponding to the CGI request; and
wherein said means for transmitting comprises means for transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
114. An apparatus according to claim 112 further comprising:
means for determining if the difference between the server CGI base form and the CGI, response is greater than a predefined difference threshold;
means for updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if said means for determining determines that the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold; and
wherein said means for comparing and said means for sending utilizes the updated server CGI base form.
115. An apparatus according to claim 108 further comprising:
means for establishing a persistent connection between the first computer and the second computer over the external communication link;
means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said means for intercepting comprises means for intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
116. A computer program product for increasing the performance of a web browser application resident on a first computer and communicating using the Hyper-Text Transfer Protocol (HTTP) with a web server application resident on a second computer remote from said first computer where at least one segment of the communication between the web browser application in the first computer and the web server application in the second computer occurs over an external communication link comprising:
computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising:
computer readable program code means for intercepting the HTTP data stream corresponding to a communication originated by the web server prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for converting the HTTP data stream originated by the web server from the HTTP protocol to a client/server specific communication protocol; and
computer readable program code means for transmitting the converted web server originated communication to the web browser over the external communication link as a client/server specific data stream.
117. A computer program product according to claim 116 further comprising:
computer readable program code means for storing the HTTP data stream received from the web server in response to a browser originated communication in a cache resident in the second computer to create a server request cache entry;
computer readable program code means for interrogating the web browser originated communication to determine if a server request cache entry corresponding to the browser originated communication has been previously stored in the cache; and
wherein said computer readable program code means for converting comprises computer readable program code means for transforming the server request cache entry associated with the browser originated communication to a client/server specific communication protocol; and
wherein said computer readable program code means for transmitting comprises computer readable program code means for sending the transformed server request cache entry to the first computer over the external communication link as a client/server specific data stream.
118. A computer program product according to claim 117 further comprising:
computer readable program code means for determining if a server request cache entry corresponding to the web browser originated communication was created within a predetermined client coherency time interval prior to the second computer receiving the web browser originated communication; and
wherein said computer readable program code means for transforming comprises computer readable program code means for transforming the server request cache entry which corresponds to the web browser originated communication to a client/server specific communication protocol if said computer readable program code means for determining determines that the server request cache entry was created with the predetermined client coherency time interval.
119. A computer program product according to claim 117 further comprising:
computer readable program code means for determining if a client cache entry exists corresponding to the web browser originated communication which is identical to a server cache entry corresponding to the web browser originated communication; and
wherein said computer readable program code means for transforming comprises computer readable program code means for calculating the interval of time between when the second computer received the web browser originated communication and when the server request cache entry corresponding to the web browser originated communication was created to provide entry age data; and
wherein said computer readable program code means for transmitting comprises computer readable program code means for transmitting as the client/server specific protocol a coherent entry response to the first computer which includes the entry age data for the server cache entry corresponding to the web browser originated communication over the external communication link.
120. A computer program product according to claim 116 wherein said web browser originated communication corresponds to a Common Gateway Interface (CGI) request, said computer program product further comprising:
computer readable program code means for interrogating the intercepted CGI request to determine if a server base cache entry corresponding to the intercepted CGI request exists to provide a server CGI base form;
computer readable program code means for storing a HTTP data stream received from the web server in response to a browser originated communication which is a request to a Common Gateway Interface (CGI) in a cache resident in the second computer to create a server base cache entry;
wherein said computer readable program code means for intercepting comprises intercepting the HTTP data stream corresponding to the communication originated by the web server in response to the intercepted CGI request prior to transmission of the HTTP data stream on the external communication link;
computer readable program code means for comparing the intercepted CGI response to the server CGI base form to provide CGI difference data corresponding to the difference between the intercepted CGI response and the server CGI base form; and
wherein said computer readable program code means for transmitting comprises computer readable program code means for sending the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
121. A computer program product according to claim 120 further comprising:
computer readable program code means for determining if the server CGI base form is identical to a client CGI base form corresponding to the CGI request; and
wherein said computer readable program code means for transmitting comprises computer readable program code means for transmitting the server CGI base form and transmitting the CGI difference data to the web browser over the external communication link as a client/server specific data stream.
122. A computer program product according to claim 120 further comprising:
computer readable program code means for determining if the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold;
computer readable program code means for updating the server CGI base form corresponding to the CGI request by storing the CGI response received from the web server as the server base cache entry corresponding to the CGI request if said computer readable program code means for determining determines that the difference between the server CGI base form and the CGI response is greater than a predefined difference threshold; and
wherein said computer readable program code means for comparing and said computer readable program code means for sending utilizes the updated server CGI base form.
123. A computer program product according to claim 116 further comprising:
computer readable program code means for establishing a persistent connection between the first computer and the second computer over the external communication link;
computer readable program code means for maintaining the persistent connection until all web browser originated communications are completed; and
wherein said computer readable program code means for intercepting comprises computer readable program code means for intercepting a plurality of web server originated communications and multiplexing them onto the external communication link while the persistent connection is maintained.
124. A method of increasing the performance of a client/server system having a client application resident on a first computer and communicating with a server application resident on a second computer remote from said first computer wherein said client application and said server application utilize a client/server independent communication protocol for communication between the client and the server and where at least one segment of the communication between the client application in the first computer and the server application in the second computer occurs over an external communication link, the method comprising the following steps:
intercepting communications in the client/server independent communication protocol originated by the remote client prior to transmission of the communications on the external communication link;
converting the communication originated by the client to a second client/server specific communication protocol;
transmitting the converted communication over the external communication link;
receiving the communication transmitted over the external communication link;
converting the communication received over the external communication link from the client server specific communication protocol to the client/server independent communication protocol; and
providing the communication originated by the remote client to the server in the client/server independent communication protocol.
125. The method of claim 124 further comprising:
intercepting communications in the client/server independent communication protocol originated by the server prior to transmission of the communications on the external communication link;
converting the communication originated by the server to a second client/server specific communication protocol;
transmitting the converted communication over the external communication link;
receiving the communication transmitted over the external communication link;
converting the communication received over the external communication link from the client/server specific communication protocol to the client/server independent communication protocol; and
providing the communication originated by the server to the remote client in the client/server independent communication protocol.
126. An apparatus for increasing the performance of a client/server system having a client application resident on a first computer and communicating with a server application resident on a second computer remote from said first computer wherein said client application and said server application utilize a client/server independent communication protocol for communication between the client and the server and where at least one segment of the communication between the client application in the first computer and the server application in the second computer occurs over an external communication link, the apparatus comprising:
means for intercepting communications in the client/server independent communication protocol originated by the remote client prior to transmission of the communications on the external communication link;
means for converting the communication originated by the client to a second client/server specific communication protocol;
means for transmitting the converted communication over the external communication link;
means for receiving the communication transmitted over the external communication link;
means for converting the communication received over the external communication link from the client server specific communication protocol to the client/server independent communication protocol; and
means for providing the communication originated by the remote client to the server in the client/server independent communication protocol.
127. An apparatus according to claim 126 further comprising:
means for intercepting communications in the client/server independent communication protocol originated by the server prior to transmission of the communications on the external communication link;
means for converting the communication originated by the server to a second client/server specific communication protocol;
means for transmitting the converted communication over the external communication link;
means for receiving the communication transmitted over the external communication link;
means for converting the communication received over the external communication link from the client/server specific communication protocol to the client/server independent communication protocol; and
means for providing the communication originated by the server to the remote client in the client/server independent communication protocol.
128. A computer program product for increasing the performance of a client/server system having a client application resident on a first computer and communicating with a server application resident on a second computer remote from said first computer wherein said client application and said server application utilize a client/server independent communication protocol for communication between the client and the server and where at least one segment of the communication between the client application in the first computer and the server application in the second computer occurs over an external communication link, the computer program product comprising:
computer-readable storage medium having computer-readable program code means embodied in said medium, said computer-readable program code means comprising:
computer readable program code means for intercepting communications in the client/server independent communication protocol originated by the remote client prior to transmission of the communications on the external communication link;
computer readable program code means for converting the communication originated by the client to a second client/server specific communication protocol;
computer readable program code means for transmitting the converted communication over the external communication link;
computer readable program code means for receiving the communication transmitted over the external communication link;
computer readable program code means for converting the communication received over the external communication link from the client server specific communication protocol to the client/server independent communication protocol; and
computer readable program code means for providing the communication originated by the remote client to the server in the client/server independent communication protocol.
129. A computer program product according to claim 128 further comprising:
computer readable program code means for intercepting communications in the client/server independent communication protocol originated by the server prior to transmission of the communications on the external communication link;
computer readable program code means for converting the communication originated by the server to a second client/server specific communication protocol;
computer readable program code means for transmitting the converted communication over the external communication link;
computer readable program code means for receiving the communication transmitted over the external communication link;
computer readable program code means for converting the communication received over the external communication link from the client/server specific communication protocol to the client/server independent communication protocol; and
computer readable program code means for providing the communication originated by the server to the remote client in the client/server independent communication protocol.
Description
FIELD OF THE INVENTION
The present invention relates to communications between client server applications such as a web browser and a web server. More particularly the present invention relates to communications over a low-speed or wireless communication link between two computers, one running a client application and the other running a server application.
BACKGROUND OF THE INVENTION
The recent publicity and emphasis on the "information superhighway" has increased awareness and acceptance of the Internet as a mass communication media. This broad based recognition of the Internet as a viable media for communication and interaction across multiple networks has also created a large established user base built upon the Internet standardized protocols for interaction between computer networks.
The paradigm for the Internet is that of a client-server relationship where Internet clients (browsers) communicate with Internet servers. To provide greater access to the Internet the communication protocols and languages utilized by the clients and servers have become standardized. These protocols include the Hyper-Text Transfer Protocol (HTTP), which is the communication protocol used for communications between clients and servers, and the Transfer Control Protocol/Internet Protocol (TCP/IP) the TCP portion of which is the transport specific protocol for communication between computers or applications. Also standardized is the language in which clients and servers communicate which is called Hyper-Text Markup Language (HTML). Because these protocols and language are machine independent, and utilize a connectionless best-efforts protocol to sending information, each transaction is fully self contained. Thus, for example, each message from a client contains information about the capabilities of the browser and is independent of any other communications for the communication to be completed. This self-contained nature of the communications between a client and a server may be referred to as "stateless" communications and increases the amount of data which must be transferred between a client and a server for a given communication.
In the context of the World Wide Web client/server applications the client may be a web browser which acts as the user interface. The web browser sends user requests to the appropriate web server and formats and displays the HTML data returned from the web server. The web browser also evaluates the HTML data to determine if there are any embedded hyper-link statements in the HTML data which would require subsequent browser requests which would then be initiated by the browser. A web server acts as the server for the client and processes the web browsers requests and returns the requested response as an HTML data portion of a HTTP data stream.
As an example of a typical world wide web communication the case of a web browser initiating a request for a "home page" from the web server illustrates the basic relationship between HTTP, HTML, TCP and the web browser and server. When the user of the web browser requests information from a specific web site, the web browser initiates communication with the web server by sending a "get" request to the web server specifying the Universal Resource Locator (URL) of the desired web site which, for purposes of this example, may be a "home page." The URL acts as the address of the web site and is unique throughout the Intern