Сжатие Tomcat 7 gzip не работает
Я добавил следующие строки в conf/server tomcat.xml-файл для включения сжатия gzip, но его не работает. Страницы по-прежнему 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"/>
есть идеи?
4 ответов
Если Tomcat противостоит Apache на порту 80, вам нужно будет включить сжатие в самом Apache. Сжатие в Tomcat будет работать только при доступе к нему непосредственно на порту 8080.
В Windows я столкнулся с этим поведением, пытаясь временно включить сжатие контента в моей среде разработки, чтобы получить приблизительное представление об общей полезной нагрузке страницы в моем приложении.
Я могу подтвердить, что Eset Nod32 Antivirus ведет себя так, как @bugs_ описывает в своем ответе на этот вопрос, и я также могу подтвердить, что запуск Fiddler4 имеет тот же эффект. Однако как закрытие Fiddler, так и отключение HTTP-сканирования NOD32 не решили проблема, для этого мне пришлось отключить использование "sendfile" в моем коннекторе следующим образом:
<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" />
важным атрибутом здесь является useSendfile="false"
Я использую Apache Tomcat 8 под Windows. Документация Tomcat (http://tomcat.apache.org/tomcat-8.0-doc/config/http.html) говорит следующее о useSendfile
:
используйте этот атрибут, чтобы включить или отключить функцию sendfile. Значение по умолчанию-true. Обратите внимание, что использование sendfile отключит любое сжатие, которое Tomcat может в противном случае выполнить для ответа.
и compression
:
существует компромисс между использованием сжатия (сохранение пропускной способности) и использованием функции sendfile (сохранение циклов процессора). Если соединитель поддерживает функцию sendfile, например соединитель NIO, использование sendfile будет иметь приоритет над сжатием. Симптомы будут заключаться в том, что статические файлы больше, чем 48 КБ отправили без сжатия. Можно отключить sendfile, установив атрибут usesendfile соединителя, как описано ниже, или изменить порог использования sendfile в конфигурации DefaultServlet в conf/web по умолчанию.XML или в интернете.xml вашего веб-приложения.
в моем случае это не сработало из-за антивируса (ESET, Windows)
Он был привязан где-то до браузера. Он распаковал тело и удалил заголовок "Content-Encoding". Для браузера ответ выглядел как обычный не сжатый ответ. Даже у скрипача он был уже распакован.
Https-ответы работали, но http-респосы были распакованы ESET.
этого недостаточно. Поверните компании ESET от. Мне пришлось перейти в "дополнительные настройки" - > " веб-доступ защита "- > "HTTP, HTTPS" и выключите его там
Если вы обслуживаете файлы с жесткого диска, вам может понадобиться добавить опцию useSendFile= "false" в соединитель.
Я тестировал подобное server.xml
изменения в моей локальной среде разработки и был разочарован тем, что он тоже не работает.
моя проблема заключалась в том, что я вносил изменения в мою локальную установку Tomcat (C:\apache-tomcat-8.0.5), которое я выбрал при использовании Servers window -> (right-click) -> New -> Server
диалог в наборе инструментов Spring.
однако при публикации фактический используемый каталог tomcat находился в (рабочее место папка.\)метаданные.\Плагины\орг.затмение.wst.сервер.core\tmp0.
вы можете проверить опубликованное местоположение, щелкнув правой кнопкой мыши сервер и выбрав "обзор местоположения развертывания..."
оттуда вы можете обновить соответствующий , или вы можете удалить и повторно добавить сервер.