Введение в принцип
HTTP-сжатие может значительно повысить скорость просмотра веб-сайтов. Его принцип заключается в том, что после того, как клиент запрашивает соответствующие ресурсы с сервера, файлы ресурсов сжимаются с сервера, а затем выводятся клиенту за распаковку и просмотр. . По сравнению с обычным процессом просмотра HTML, CSS, Javascript и текста он может сэкономить около 40% трафика. Что еще более важно, он также может сжимать динамически генерируемые веб-страницы, включая CGI, PHP, JSP, ASP, Servlet, SHTML и т. д., причем эффективность сжатия также очень высока.
Метод настройки
Tomcat 5.0 и более поздние версии поддерживают сжатие выходного содержимого с использованием формата сжатия gzip.
Измените %TOMCAT_HOME%/conf/server.xml и измените узлы следующим образом:
<Connector port="80" протокол="HTTP/1.1" ConnectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8" Compression="on" CompressionMinSize="50" noCompressionUserAgents="gozilla" , травиата" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
Как видно из свойств приведенного выше узла, для использования функции сжатия gzip необходимо добавить в узел Соединитель следующие свойства:
•compression="on" включает функцию сжатия.
•compressionMinSize="50" Включить размер выходного содержимого сжатия, по умолчанию — 2 КБ.
•noCompressionUserAgents="gozilla, traviata" Отключить сжатие для следующих браузеров.
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Какие типы ресурсов необходимо сжимать?
Метод испытания
Как проверить эффективность сжатия после включения функции сжатия TOMCAT?
Прежде всего, Tomcat определяет, поддерживает ли браузер функцию сжатия, на основе кодировки принятия в заголовке запроса браузера. Если это значение содержит gzip, это означает, что браузер поддерживает просмотр содержимого, сжатого gzip. Мы можем использовать два метода, чтобы проверить, поддерживает ли браузер. функция сжатия — «Вступить в силу».
Прямой запрос через браузер
Каждый напрямую обращается к серверу с включенной конфигурацией сжатия через браузер, а затем использует инструмент захвата пакетов для просмотра захваченных пакетов данных. Если вы не можете понять много контента, это означает, что функция сжатия включена.
Имитируя запросы через программу, мы используем httpclient для написания простой тестовой программы. Код выглядит следующим образом:
@Test public void testGzip() { HttpClient httpClient = новый GetMethod getMethod = новый GetMethod("http://localhost/admin.jsp"); попробуйте { getMethod.addRequestHeader("accept-encoding", "gzip,"); сдуть"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (совместимо; MSIE 6.0; Windows NT 5.0; Панель инструментов Alexa; Maxthon 2.0)"); int result = httpClient.executeMethod(getMethod); if (result == 200) { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); HttpException е) { e.printStackTrace() } catch (IOException е) {; e.printStackTrace() } наконец { getMethod.releaseConnection() } };
Запустите эту программу junit и посмотрите, какое содержимое она выводит. Если на выходе есть искаженные символы, а длина напечатанного содержимого намного меньше фактической длины, это означает, что наша конфигурация вступила в силу с помощью некоторых других инструментов проверки. обнаружите, что скорость просмотра веб-сайта будет значительно улучшена.
Примечание. Если вы обнаружите, что содержимое не сжато, вы можете изменить размер compressMinSize. Если запрошенный ресурс меньше этого значения, сжатие не будет включено.