Le navigateur peut envoyer un en-tête "Accepter l'encodage" qui indique qu'il peut accepter différents types d'encodage. Il s'agit généralement de "gzip, dégonfler". (Google Chrome a un format bizarre appelé "sdch" que vous pouvez simplement ignorer.) Ensuite, si vous obtenez cet en-tête du navigateur, vous pouvez, si vous le souhaitez, renvoyer votre contenu compressé à l'aide du format gzip ou du dégonflage. Lorsque vous faites cela, vous devez bien sûr dire au navigateur ce que vous avez fait, donc vous ajoutez l'en-tête "Content Encoding" à votre contenu sortant.
Les formats gzip et deflate sont définis dans RFC (documents de normes Internet). Il n'y a pas d'option "zip", bien qu'il puisse y avoir une option "bzip2" dans certains navigateurs.
Maintenant, votre problème est de coder vos trucs dans ce format et de les renvoyer. Si vous utilisez Apache, il existe des moyens de le configurer pour le faire automatiquement (mod_deflate, etc.). Si vous envoyez des images, notez que la plupart des formats d'image tels que JPEG, PNG, GIF, etc. sont déjà compressés, vous n'avez donc aucun avantage à les compresser. Fondamentalement, cela ne fonctionne que pour HTML, CSS, texte brut ou JavaScript.
Vous devez être prudent en utilisant l'encodage "dégonfler" car Internet Explorer a un bogue de longue date où il ne comprend pas trop bien cela. Je pense que des choses fantastiques comme Google App Engine détermineront automatiquement la compression à utiliser et l'appliqueront pour vous.