Apparatus and method for improving performance of proxy server arrays that use persistent connections
First Claim
1. A method of accessing information in a client/server network, comprising the steps, performed by a client in the client/server network, of:
- receiving a proxy table having at least one entry for each of a plurality of proxy servers in the client/server network, the entry containing information about how to connect to a respective one of the proxy servers;
receiving an address of a page to access, the page being stored on a server in the client/server network;
truncating the address to remove from the address a portion of the address attributable to the page, yielding a truncated address identifying the server for the page;
hashing the truncated address to yield an index value of the proxy table; and
accessing a proxy server that is pointed to by the index value in the proxy table, to retrieve the page.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus that ensures that requests for pages in a particular domain name are routed to the same proxy server by all of a plurality of clients. If, for example, a proxy server has a persistent connection to a server for a domain, all incoming requests for that domain will be sent to the proxy server and will, thus, be able to take advantage of the persistent connection. Each client contains a proxy table that is periodically updated by one or more of the proxy servers. A proxy table in a client contains an entry corresponding to each proxy server. When a client needs to access a resource through a proxy server, the client truncates the address (e.g., the URL) of the resource. Thus, for example, all addresses in a particular domain name are truncated to the same value. The truncated address is then used to hash into the proxy table in the client and to identify a proxy server. The client sends its request to the identified proxy server. Thus, all requests for a particular domain hash to the same proxy table entry and, hence, to the same proxy server. If the proxy server has opened a persistent connection to the server for the requested domain, the proxy server will be able to take advantage of the persistent connection.
217 Citations
29 Claims
-
1. A method of accessing information in a client/server network, comprising the steps, performed by a client in the client/server network, of:
-
receiving a proxy table having at least one entry for each of a plurality of proxy servers in the client/server network, the entry containing information about how to connect to a respective one of the proxy servers;
receiving an address of a page to access, the page being stored on a server in the client/server network;
truncating the address to remove from the address a portion of the address attributable to the page, yielding a truncated address identifying the server for the page;
hashing the truncated address to yield an index value of the proxy table; and
accessing a proxy server that is pointed to by the index value in the proxy table, to retrieve the page. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
converting each character in the address to its equivalent number in ASCII representation, yielding a plurality of converted numbers;
adding the plurality of converted numbers to yield a sum; and
taking the remainder modulus N of the sum where N is a number of logical entries in the proxy table.
-
-
9. The method of claim 1, wherein the step of accessing a proxy server includes the step of sending, by the client, an http request to the proxy server at a URL contained within the proxy table in the client in accordance with the index value.
-
10. The method of claim 1, wherein the proxy table identifies the hash function used in the hashing step.
-
11. The method of claim 1, wherein the proxy table includes explicit indices.
-
12. The method of claim 1, wherein multiple proxy table entries share a common index.
-
13. A method of accessing information in a client/server network, comprising the steps, performed by a client in the client/server network, of:
-
receiving an address of a first page to access, the first page being stored on a first server in the client/server network;
receiving an address of a second page to access, the second page being stored on the first server in the client/server network;
truncating the first and second addresses of the first and second pages to remove from each address the portion of the address attributable to the page;
hashing the truncated first and second addresses to yield a first index value and a second index value of a proxy table stored in the client, the first index value and the second index value always being equal because the first and second page are stored on the same server; and
accessing the same proxy server to access the first and second page on the first server, the same proxy server being identified by the first and second index values in the proxy table. - View Dependent Claims (14)
-
-
15. An apparatus that accesses information in a client/server network, comprising:
-
circuitry configured to receive a proxy table having an entry, for each of a plurality of proxy servers in the client/server network, containing information about how to connect to a respective one of the proxy servers;
circuitry configured to receive an address of a page to access, the page being stored on a server in the client/server network;
circuitry configured to truncate the address to remove from the address the portion of the address attributable to the page;
circuitry configured to hash the truncated address to yield an index value of the proxy table; and
circuitry configured to access a proxy server that is pointed to by the index value in the proxy table. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24)
a portion configured to convert each character in the address to its equivalent number in ASCII representation, yielding a plurality of converted numbers;
a portion configured to add the plurality of converted numbers to yield a sum; and
a portion configured to take the remainder modulus N of the sum where N is a number of logical entries in the proxy table.
-
-
18. The apparatus of claim 15, wherein the circuitry configured to access a proxy server includes the circuitry configured to send an HTTP request to the proxy server at a URL contained within the proxy table in accordance with the index value.
-
19. The apparatus of claim 15, further comprising, in the proxy server, circuitry configured to open a persistent http connection between the proxy server and the server if one does not already exist.
-
20. The apparatus of claim 15, wherein the proxy table is received from a human user.
-
21. The apparatus of claim 15, wherein the proxy table is received from one of the proxy servers.
-
22. The apparatus of claim 15, wherein the proxy table identifies a hash function used in the hashing portion.
-
23. The apparatus of claim 15, wherein the proxy table includes explicit indices.
-
24. The apparatus of claim 15, wherein multiple proxy table entries share a common index.
-
25. A system that accesses information in a client/server network, comprising:
-
circuitry configured to receive an address of a first page to access, the first page being stored on a first server in the client/server network;
circuitry configured to receive an address of a second page to access, the second page being stored on the first server in the client/server network;
circuitry configured to truncate the first and second addresses to remove from the addresses the portion of the address attributable to the pages;
circuitry configured to hash the truncating first and second addresses to yield a first index value and a second index value of a proxy table stored in the client, the first index value and the second index value always being equal; and
circuitry configured to access the same proxy server for the first and second pages, the same proxy server being identified by the first and second index values in the proxy table.
-
-
26. An apparatus that accesses information in a client/server network, comprising:
-
means for receiving a proxy table having an entry, for each of a plurality of proxy servers in the client/server network, that contains information about how to connect to a respective one of the proxy servers;
means for receiving an address of a page to access, the page being stored on a server in the client/server network;
means for truncating the address to remove from the address a portion of the address attributable to the page, yielding a truncated address identifying the server for the page;
means for hashing the truncated address to yield an index value of the proxy table; and
means for accessing a proxy server that is pointed to by the index value in the proxy table, to retrieve the page.
-
-
27. An apparatus that accesses information in a client/server network, comprising:
-
means for receiving an address of a first page to access, the first page being stored on a first server in the client/server network;
means for receiving an address of a second page to access, the second page being stored on the first server in the client/server network;
means for truncating the first and second addresses of the first and second pages to remove from each address the portion of the address attributable to the page;
means for hashing the truncated first and second addresses to yield a first index value and a second index value of a proxy table stored in the client, the first index value and the second index value always being equal because the first and second page are stored on the same server; and
means for accessing the same proxy server to access the first and second page on the first server, the same proxy server being identified by the first and second index values in the proxy table.
-
-
28. A computer program product comprising:
-
a computer readable medium having computer readable code embodied therein to access information in a client/server network, the computer program product including;
computer program code devices configured to cause a computer to effect receiving a proxy table having an entry, for each of a plurality of proxy servers in the client/server network, containing information about how to connect to a respective one of the proxy servers;
computer program code devices configured to cause a computer to effect receiving an address of a page to access, the page being stored on a server in the client/server network;
computer program code devices configured to cause a computer to effect truncating the address to remove from the address the portion of the address attributable to the page;
computer program code devices configured to cause a computer to effect hashing the truncated address to yield an index value of the proxy table; and
computer program code devices configured to cause a computer to effect accessing a proxy server that is pointed to by the index value in the proxy table.
-
-
29. A computer data signal embodied in a carrier wave and representing sequences of instructions which, when executed by the processor, causes said processor to access information in a client/server network, by performing the steps of:
-
executing a first computer program for receiving a proxy table having an entry, for each of a plurality of proxy servers in the client/server network, containing information about how to connect to a respective one of the proxy servers;
executing the first computer program for receiving an address of a page to access, the page being stored on a server in the client/server network;
executing the first computer program for truncating the address to remove from the address the portion of the address attributable to the page;
executing the first computer program for hashing the truncated address to yield an index value of the proxy table; and
executing the first computer program for accessing a proxy server that is pointed to by the index value in the proxy table.
-
Specification