Puis-je compresser les requêtes HTTP en utilisant GZIP?
Je communique à un Serveur Tomcat à l'aide d'une application Java ME sur mon appareil mobile.
Je me demandais si je pouvais compresser mes demandes/réponses à l'aide de Gzip pour réduire le nombre d'octets transmis sur le réseau.
source d'informationauteur Kevin Boyd | 2009-09-20
Vous devez vous connecter pour publier un commentaire.
Les téléphones modernes ont tellement la puissance du PROCESSEUR et le réseau est relativement lents, donc la compression est parfaitement logique. C'est assez facile à faire aussi.
Sur le J2ME côté, vous faites quelque chose comme cela (en supposant que vous utilisez HttpConnection),
Nous utilisons GZIPInputStream de tinyline mais je suis sûr qu'il en existe d'autres,
http://www.tinyline.com/utils/index.html
Sur le côté serveur, tout est intégré. Juste ajouter les attributs suivants pour le Connecteur server.xml sur Tomcat,
Vous pouvez compresser le contenu d'une requête HTTP de la réponse, mais pas les en-têtes. Voir la section 3.6 de la HTTP 1.1 spécifications, et la section qui décrit le Contenu de l'en-tête de Codage.
EDIT: le revers de La médaille c'est qu'il n'y a aucune garantie qu'un serveur HTTP, côté accepte toute particulière format de compression. Et selon la qualité de la côté serveur, la mise en œuvre du protocole HTTP, il pourrait même ne pas reconnaître que la demande de contenu a été compressé. Si vous ne voulez pas le faire, sauf si vous savez que le côté serveur prend en charge comprimé contenu de demande.
Puisque vous utilisez Tomcat, envisager la possibilité de mettre une instance de Serveur HTTP Apache en front de du serveur Tomcat.
Cela peut être fait à l'aide de la mod_jk module pour le Serveur HTTP Apache. Une fois que vous avez fait cela, vous pouvez utiliser mod_gzip/mod_deflate dans Apache.
Bien sûr, votre client doit avoir la capacité de gérer les réponses compressées, pour que cela fonctionne. Si vous forcez votre client de travailler avec des réponses compressées, le client sera à la fin de l'affichage du charabia, car elle aurait été (généralement) attend texte brut réponses. Vous trouverez l'indicateur certain de la part du client capacité de gérer les réponses compressées, le client Accepte têtes d'Encodage.
Cela peut être fait par programmation, à l'aide d'un servlet ou un filtre de servlet qui écrit dans un ZipOutputStream ou GZipOutputStream, si vous voulez éviter l'introduction du Serveur HTTP Apache dans le réseau. Vous trouverez quelques conseils sur la comment procéder à la OReilly OnJava.com site.
Sur le côté serveur, vous pouvez l'activer comme décrit icimais l'application mobile aura besoin d'une bibliothèque qui peut décompresser gzip, comme cette une. Peut-être un peu de travail pour qu'il fonctionne bien...