Reformatting with modular proxy server
First Claim
1. A method, comprising:
- a. retrieving onto a proxy server content from a remote server, the proxy server comprising a first module and a second module, each of the first and second modules comprising executable code that is dynamically, linked into the proxy server at a run time of the proxy server;
b. reformatting the content into first reformatted content using the first module aid not using the second module;
c. reformatting the content into second reformatted content using the second module and not using the first module;
d. receiving a request from a first client onto the proxy server for the content;
e. supplying the first reformatted content to the first client from the proxy server, wherein the supplying of the first reformatted content involves determining that the first reformatted content is to be supplied to the first client based at least in part on a request variable from the request from the first client;
f. receiving a request from a second client onto the proxy server for the content; and
g. supplying the second reformatted content to the second client from the proxy server, wherein the supplying of the second reformatted content involves determining that the second reformatted content is to be supplied to the second client based at least in part on a request variable from the request from the second client.
4 Assignments
0 Petitions
Accused Products
Abstract
A proxy server “platform” is provided that is easily modified and customized to reformat web content in a particular way under certain conditions as determined by the operator of the proxy server. The proxy server retrieves from the Internet web content requested by a client, reformats it into a suitable format for the requesting client, and then forwards the reformatted web content to the requesting client. The proxy server evaluates operator-alterable rules to determine, based on capabilities of the requesting client (and/or on request variables), specifically how to reformat the requested web content so that it will be suitable for passing on to the requesting client. The platform has a “modular” architecture wherein content reformatting is performed by one or more “modules”. The modules are dynamically-linkable into the executing proxy server platform software at run time. The platform is easily customizable by the operator because modules can be deleted and/or added without affecting other modules. Modules are, in one embodiment, written in accordance with the COM modular programming standard so that individual modules can be removed, replaced and/or added without having to modify or recompile other modules. In one embodiment, web content cached on the proxy server is deemed suitable for passing to a requesting client if evaluation of the rules for the request from the client matches the prior evaluation of the rules that gave rise to the original reformatted web content as cached.
-
Citations
21 Claims
-
1. A method, comprising:
-
a. retrieving onto a proxy server content from a remote server, the proxy server comprising a first module and a second module, each of the first and second modules comprising executable code that is dynamically, linked into the proxy server at a run time of the proxy server;
b. reformatting the content into first reformatted content using the first module aid not using the second module;
c. reformatting the content into second reformatted content using the second module and not using the first module;
d. receiving a request from a first client onto the proxy server for the content;
e. supplying the first reformatted content to the first client from the proxy server, wherein the supplying of the first reformatted content involves determining that the first reformatted content is to be supplied to the first client based at least in part on a request variable from the request from the first client;
f. receiving a request from a second client onto the proxy server for the content; and
g. supplying the second reformatted content to the second client from the proxy server, wherein the supplying of the second reformatted content involves determining that the second reformatted content is to be supplied to the second client based at least in part on a request variable from the request from the second client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
the supplying of the first reformatted content to the first client from the proxy server involves determining that the first reformatted content is to be supplied to the first client based at least in part on information indicative of client capabilities of the first client, the information indicative of client capabilities of the first client being present in the request from the first client, and the supplying of the second reformatted content to the second client from the proxy server involves determining that the second reformatted content is to be supplied to the second client based at least in part on information indicative of client capabilities of the second client, the information indicative of client capabilities of the second client being present in the request from the second client.
-
-
3. The method of claim 2, wherein the client capabilities of the first client includes an indication of an amount of memory storage space on the first client, and wherein the client capabilities of the second client includes an indication of an amount of memory storage on the second client.
-
4. The method of claim 2, wherein the client capabilities of the first client includes an indication of an amount of disk storage space on the first client, and wherein the client capabilities of the second client includes an indication of an amount of disk storage on the second client.
-
5. The method claim 2, wherein the client capabilities of the first client includes an indication of a resolution of a display of the first client, and wherein the client capabilities of the second client includes an indication of a resolution of a display of the second client.
-
6. The method of claim 2, wherein the client capabilities of the first client includes an indication of a performance of a connection to the first client, and wherein the client capabilities of the second client includes an indication of a performance of a connection to the second client.
-
7. The method of claim 6, wherein the connection to the first client is a dial-up connection, and wherein the connection to the second client is a dial-up connection.
-
8. The method of claim 6, wherein the connection to the first client is a DSL connection, and wherein the connection to the second client is a DSL connection.
-
9. The method of claim 6, wherein the connection to the first client is a cable modem connection, and wherein the connection to the second client is a cable modem connection.
-
10. The method of claim 2, wherein the client capabilities of the first client includes an indication of an amount of cache memory on the first client, and wherein the client capabilities of the second client includes an indication of an amount of cache memory on the second client.
-
11. The method of claim 2, wherein the client capabilities of the first client includes an indication that the first client is enabled for a particular image data format, and wherein the client capabilities of the second client includes an indication that the second client is enabled for a particular image data format.
-
12. The method of claim 2, wherein the client capabilities of the first client includes an indication that the first client is enabled for a particular audio data format, and wherein the client capabilities of the second client includes an indication that the second client is enabled for a particular audio data format.
-
13. The method of claim 2, wherein the client capabilities of the first client includes an indication of a processor clock speed of the first client, and wherein the client capabilities of the second client includes an indication of a processor clock speed of the second client.
-
14. The method of claim 2, wherein the information indicative of client capabilities of the first client includes a first software build number, and the information indicative of client capabilities of the second client includes a second software build number.
-
15. The method of claim 2, wherein the information indicative of client capabilities of the first client includes a software version number, and the information indicative of client capabilities of the second client includes a second software version number.
-
16. The method of claim 1, wherein the proxy server comprises a tokenizer module and a tokenizer sub-module, the proxy server generating the reformatted content by:
-
causing the tokenizer module to process the content so as to output tokens; and
causing the tokenizer sub-module to operate on the tokens.
-
-
17. A method as recited in claim 1, further comprising:
-
generating a third dynamically-linkable module;
loading the third dynamically-linkable module onto the modular proxy server; and
using the third dynamically-linkable module to reformat the content in accordance to a request received by a third client of the modular proxy server, and based at least in part on one or more of a request variable and a client capability that is specifically identified in the client request of the third client.
-
-
18. The method of claim 17, further comprising:
(a) before the generating of the third dynamically-linkable module, using at least one of the first and second dynamically-linkable modules to reformat the content.
-
19. A method as recited in claim 1, wherein the content requested by the first client includes an email message.
-
20. A proxy server configured to implement the method recited in claim 1, the proxy server being configured to dynamically access the first and second modules at run-time.
-
21. A computer program product comprising one or more computer-readable media having computer-executable instructions for implementing the method recited in claim 1.
Specification