Compression routines look for repeating data patterns in files, then replace the patterns with shorter-bit patterns called tokens. Files that contain many repeating bits benefit the most from compression. For example, with compression, you can substantially reduce the size of most bitmap files and Word documents. But JPEG files are already compressed, so there's little or no benefit in trying to shrink the file size further.
You can choose from many compression algorithms. Both GZip and the popular Zip format are based on the widely used DEFLATE algorithm. Generally speaking, the greater the degree of compression you achieve, the longer it take to compress and decompress the data. So, compressing and decompressing frequently accessed data might require too much overhead and time for your needs.
You can perform compression and decompression on the server, the client, or the middle tier. Server-based compression can greatly reduce your storage requirements. But if your clients have excess capacity, having the client perform the compression and decompression makes sense—particularly if the client and server are connected by a slow or bandwidth-constrained network.