Ziproxy is flexible, it does not require a local client (but may operate in client mode aswell), and may be installed in a number of different ways.
In order to show how Ziproxy typically work, the most common setup modes are presented below.
1. - Ziproxy as a remote proxy
By far, the most commonly used setup.
Here Ziproxy accesses the remove www servers through the fast link, compresses the data, then send it to the client through the slow link.
In such setups there's no additional software required by the client, Ziproxy acts much as a common proxy.
The "HTTP client" may be anything from 1 single computer to a whole network with over 1000 clients.
2. - Ziproxy as a remote proxy + local Ziproxy
Similar to setup #1, except that the client also runs its instance of Ziproxy.
Although Ziproxy does not require a Ziproxy-specific client, there are circumstances where is desired to run Ziproxy-as-a-client:
The client does not support JPEG 2000. Ziproxy is used to (locally) filter JPEG 2000 back to standard JPEG, so such clients may still have the advantage of JPEG 2000 compression.
The client supports JPEG 2000 but it is buggy and/or slow. The client may only support JPEG 2000 in a limited fashion and does not understands the JPEG 2000 data sent by Ziproxy, either corrupting the picture or simply crashing.
Some clients may be stable and render the pictures properly, but generate too much CPU load.
In either case, it's possible to transfer the JPEG 2000 decoding load to Ziproxy and solve such problems.
The client does not support gzip. Nowadays web browsers typically support gzip, but certain HTTP proxies do not (Squid 2.x, for example).
Need to support both JPEG 2000 and standard JPEG at the same proxy. Usually Ziproxy tries to recompress pictures to either JPEG or to JPEG 2000 (depends on how it was configured). In certain cases one may want to support basic clients (with no JPEG 2000 support) but offer JPEG 2000 at the same time.
There's no reliable way to detect whether a client support JPEG 2000 or not, so Ziproxy-as-a-client may be used as a way to detect that.
Likewise the setup #1, the "HTTP client" may be anything from 1 single computer to a whole network with over 1000 clients (in such case only one instance of Ziproxy is required per LAN).