Je vais répondre à cela aussi, car j'ai eu un énorme headake qui essayait de faire ce travail, et je l'ai finalement fait. En outre, je ne suis pas un expert majeur dans les détails de HTTP, donc je vais donner une réponse non professionnelle. D'abord, voici comment j'ai vérifié si mon GZipFilter fonctionnait ou non. J'ai démarré Firefox, vérifié que j'avais l'addon Firebug, lancé l'extension Firebug, je suis allé sur l'onglet "Net". Ensuite, j'ai accédé à l'URL qui devrait renvoyer une réponse GZipped.Voici ce que Firebug montre:
La colonne « Taille » indique la taille de la réponse. Si vous passez la souris sur l'étiquette de la colonne "Taille", elle vous indiquera que si la réponse est compressée, elle affichera la taille compressée de la réponse.
Tout cela a été fait avec le filtre GZip activé dans Jetty. J'ai ensuite supprimé la déclaration de filtre GZip de mon web.xml, redémarré Jetty et répété le test. Cette fois, la réponse avait la même taille qu'avant, ce qui indiquait clairement que la compression GZip ne fonctionnait pas.
Après plusieurs essais et erreurs, ce que j'ai fait est de regarder dans Firebug dans la section "Request Headers" pour voir la valeur de l'en-tête "Accept". J'ai remarqué qu'ici il y avait des valeurs telles que "application/xml" et "text/xml", mais la façon dont j'avais configuré le paramètre init "mimeTypes" de mon filtre GZIp ne contenait que l'application "text/xml"/xml "). Il a été configuré comme ceci:
<filter>
<filter-name>GzipFilter</filter-name>
<filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
<init-param>
<param-name>mimeTypes</param-name>
<param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml,application/json,application/xml; charset=UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GzipFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Après avoir ajouté la valeur « application/xml » à la liste comme ceci:
<filter>
<filter-name>GzipFilter</filter-name>
<filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
<init-param>
<param-name>mimeTypes</param-name>
<param-value>text/html,text/plain,text/xml,application/xhtml+xml,application/xml,text/css,application/javascript,image/svg+xml,application/json,application/xml; charset=UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GzipFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Je refis mon test précédent, et bien sûr maintenant la taille déclarée de la réponse était beaucoup plus petite:
notez également que maintenant, les têtes de réponse signalés contiennent un champ supplémentaire appelé « Content-Encoding » avec une valeur de "gzip". Donc, fondamentalement, l'idée est de vérifier le type de valeurs que vous envoyez dans l'en-tête Request "Accept" et assurez-vous que toutes ces valeurs sont configurées dans le paramètre init "mimeTypes" du filtre GZip.
J'ai finalement eu le temps de revenir sur ce problème. Je ne reçois aucune erreur. Mais je ne vois pas de gzipping qui se passe réellement. Comment puis-je vérifier que le filtre fonctionne réellement? – Misha
@Misha, Vous pouvez soit utiliser le logiciel de suivi des paquets TCP, ou vérifier en utilisant certains outils en ligne, comme http://www.gidnetwork.com/tools/gzip-test.php – spektom