El navegador puede enviar un encabezado "Aceptar codificación" que dice que puede aceptar diferentes tipos de codificación. Por lo general, esto es "gzip, desinflar". (Google Chrome tiene un formato extraño llamado "sdch" que simplemente puede ignorar). Luego, si obtiene ese encabezado del navegador, puede, si lo desea, enviar su contenido comprimido de nuevo usando el formato gzip o desinflar. Cuando haces eso, por supuesto, debes decirle al navegador lo que has hecho, así que agregas el encabezado "Codificación de contenido" a tus cosas salientes.
Los formatos gzip y deflate están definidos en RFC (documentos estándar de internet). No hay una opción "zip", aunque puede haber una opción "bzip2" en algunos navegadores.
Ahora su problema es codificar sus cosas en ese formato y enviarlas de vuelta. Si está utilizando Apache, hay formas de configurarlo para que lo haga automáticamente (mod_deflate, etc.). Si está enviando imágenes, tenga en cuenta que la mayoría de los formatos de imagen como JPEG, PNG, GIF, etc. ya están comprimidos, por lo que no obtendrá ningún beneficio al comprimirlos. Básicamente solo funciona para HTML, CSS, texto plano o JavaScript.
Debe tener cuidado al usar la codificación "desinflar", ya que Internet Explorer tiene un error de larga data en el que no lo entiende muy bien. Creo que cosas sofisticadas como Google App Engine resolverán automáticamente qué compresión usar y la aplicarán por usted.