Я тоже отвечу на это, так как у меня была огромная головная боль, пытавшаяся сделать эту работу, и я наконец сделал это. Кроме того, я не являюсь крупным экспертом в тонких деталях HTTP, поэтому я дам непрофессиональный ответ.
Во-первых, вот как я проверил, работает ли мой GZipFilter или нет. Запустил Firefox, убедился, что у меня есть аддон Firebug, запустил аддон Firebug, перешел на вкладку «Net». Затем я получил доступ к URL, который должен вернуть GZipped ответ. Вот что показывает Firebug:
В столбце «Размер» отображается размер ответа. Если навести указатель мыши на метку столбца «Размер», он скажет вам, что если ответ сжат, то будет отображен сжатый размер ответа.
Все это было сделано с включенным фильтром GZip в Jetty. Затем я удалил объявление фильтра GZip из моего файла web.xml, перезапустил Jetty и повторил тест. На этот раз размер ответа был точно таким же, как и раньше, что ясно указывало на то, что сжатие GZip не работало.
После нескольких проб и ошибок я посмотрел в Firebug раздел «Заголовки запроса», чтобы увидеть значение для заголовка «Принять». Я заметил, что здесь есть такие значения, как «application / xml» и «text / xml», но способ, которым я настроил параметр init моего фильтра GZIp «mimeTypes», содержал только «text / xml» (и отсутствовал) приложение / XML "). Это было настроено так:
<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>
После добавления значения «application / xml» в список, например, так:
<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>
Я переделал свой предыдущий тест, и, конечно же, теперь сообщенный размер ответа был намного меньше:
Также обратите внимание, что теперь сообщаемые заголовки ответа содержат дополнительное поле с именем «Content-Encoding» со значением «gzip».
Таким образом, в основном идея состоит в том, чтобы проверить, какие значения вы отправляете в заголовке запроса «Принять», и убедиться, что все эти значения сконфигурированы в параметре init «mimeTypes» фильтра GZip.