Tomcat 7 la compression GZIP ne fonctionne pas

j'ai ajouté les lignes suivantes dans la conf/server de tomcat.le fichier xml pour activer la compression gzip mais ne fonctionne pas. Les Pages sont encore uncompressesd.

 <Connector port="8080"
         compression="on"
         compressionMinSize="2048"
         noCompressionUserAgents="gozilla, traviata"
         compressableMimeType="text/html,text/xml,text/plain,text/css,
         text/javascript,text/json,application/x-javascript,
         application/javascript,application/json"/>

une idée?

28
demandé sur N.. 2013-05-20 20:07:10

4 réponses

si Tomcat est dirigé par Apache sur le port 80, vous devrez activer la compression dans Apache lui-même. La compression dans Tomcat ne fonctionnera que si vous y accédez directement sur le port 8080.

32
répondu David Levesque 2013-05-21 14:58:05

sur Windows, j'ai rencontré ce comportement en essayant d'activer temporairement la compression de contenu dans mon environnement de développement pour acquérir une compréhension approximative de la charge utile totale d'une page dans mon application.

je peux confirmer que L'Antivirus ESET NOD32 se comporte de la manière que @bugs_ décrit dans sa réponse à cette question et je peux également confirmer que l'exécution de Fiddler4 a le même effet. Cependant, la fermeture de Fiddler et la désactivation du balayage HTTP de NOD32 n'ont pas résolu le problème. problème, pour ce faire, j'ai dû désactiver l'utilisation de "sendfile" dans mon connecteur comme suit:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           compression="on" compressionMinSize="8192" useSendfile="false"
           compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
           redirectPort="8443" />

L'attribut important, ici, est useSendfile="false"

J'utilise Apache Tomcat 8, sous Windows. La documentation Tomcat (http://tomcat.apache.org/tomcat-8.0-doc/config/http.html) dit ce qui suit à propos de useSendfile:

Utilisez cet attribut pour activer ou désactiver la capacité sendfile. La valeur par défaut est true. Notez que l'utilisation de sendfile désactivera toute compression que Tomcat aurait pu effectuer sur la réponse.

ce sujet compression:

il y a un compromis entre l'utilisation de la compression (enregistrer votre bande passante) et l'utilisation de la fonctionnalité sendfile (enregistrer vos cycles CPU). Si le connecteur supporte la fonctionnalité sendfile, par exemple le connecteur NIO, l'utilisation de sendfile aura priorité sur la compression. Les symptômes seront que les fichiers statiques plus grand que 48 Kb sera envoyé non compressé. Vous pouvez désactiver sendfile en paramétrant l'attribut useSendfile du connecteur, comme décrit ci-dessous, ou modifier le seuil d'utilisation de sendfile dans la configuration du DefaultServlet dans le conf/web par défaut.xml ou sur le web.xml de votre application web.

9
répondu Xharlie 2016-03-26 17:58:39

Dans mon cas, il n'a pas travaillé en raison de l'Antivirus (ESET, Windows)

il a été relié quelque part avant le navigateur. Il décompresse le corps et supprime l'en-tête "Content-Encoding". Pour la réponse du navigateur a semblé comme la réponse normale non compressée. Même dans Fiddler il était déjà décompressé.

les réponses Https fonctionnaient, mais les réponses http étaient décomposées par L'ESET.

ce n'est pas assez. Activer ESET off. J'ai dû aller à "paramètres avancés" -> "protection de l'accès Web" - >"HTTP, HTTPS" et éteignez-le là

si vous servez des dossiers du disque dur vous pouvez avoir besoin d'ajouter l'option useSendFile= "false" dans le connecteur.

4
répondu bugs_ 2016-04-01 11:53:23

j'ai été le tester similaires server.xml des changements dans mon environnement de développement local et j'étais frustré que cela ne fonctionne pas non plus.

mon problème était que je faisais des modifications à mon installation locale Tomcat (C:\apache-tomcat-8.0.5) que j'ai sélectionné en utilisant le Servers window -> (right-click) -> New -> Server boîte de dialogue dans Spring Tool Suite.

cependant, une fois publié, le répertoire tomcat utilisé se trouvait dans (espace de travail dossier.\)métadonnées.\plugins\org.Eclipse.wst.serveur.core\tmp0.

vous pouvez vérifier l'emplacement publié en faisant un clic droit sur le serveur et en choisissant "parcourir L'emplacement de déploiement..."

enter image description here

A partir de là, vous pouvez mettre à jour le server.xml fichier, ou vous pouvez supprimer et ajouter de nouveau le serveur.

3
répondu Matthew Steven Monkan 2014-06-22 23:48:50