Скачать кошерная версия Jetty, которая близко соответствует тому, что в настоящее время в Solr: http://www.eclipse.org/jetty/download.html
Extract, что .zip в папку вы будете отбрасывать. Скопируйте эти файлы на копию причала в Solr (находится в пути к Solr/сервер /):
modules/gzip.mod
etc/gzip.xml
Изменить modules/gzip.mod
:
#
# GZIP module
# Applies GzipHandler to entire server
#
[depend]
server
[xml]
etc/jetty-gzip.xml
[ini-template]
## Minimum content length after which gzip is enabled
jetty.gzip.minGzipSize=2048
## Check whether a file with *.gz extension exists
jetty.gzip.checkGzExists=false
## Gzip compression level (-1 for default)
jetty.gzip.compressionLevel=-1
## User agents for which gzip is disabled
jetty.gzip.excludedUserAgent=.*MSIE.6\.0.*
Редактирование etc/gzip.xml
:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<!-- =============================================================== -->
<!-- Mixin the GZIP Handler -->
<!-- This applies the GZIP Handler to the entire server -->
<!-- If a GZIP handler is required for an individual context, then -->
<!-- use a context XML (see test.xml example in distribution) -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="insertHandler">
<Arg>
<New id="GzipHandler" class="org.eclipse.jetty.server.handler.gzip.GzipHandler">
<Set name="minGzipSize">
<Property name="jetty.gzip.minGzipSize" deprecated="gzip.minGzipSize" default="2048"/>
</Set>
<Set name="checkGzExists">
<Property name="jetty.gzip.checkGzExists" deprecated="gzip.checkGzExists" default="false"/>
</Set>
<Set name="compressionLevel">
<Property name="jetty.gzip.compressionLevel" deprecated="gzip.compressionLevel" default="-1"/>
</Set>
<Set name="excludedAgentPatterns">
<Array type="String">
<Item>
<Property name="jetty.gzip.excludedUserAgent" deprecated="gzip.excludedUserAgent" default=".*MSIE.6\.0.*"/>
</Item>
</Array>
</Set>
<Set name="includedMethods">
<Array type="String">
<Item>GET</Item>
<Item>POST</Item>
</Array>
</Set>
<Set name="includedPaths"><Array type="String"><Item>/*</Item></Array></Set>
<Set name="excludedPaths"><Array type="String"><Item>*.gz</Item></Array></Set>
<Call name="addIncludedMimeTypes"><Arg><Array type="String">
<Item>text/html</Item>
<Item>text/plain</Item>
<Item>text/xml</Item>
<Item>application/xml</Item><!-- IMPORTANT - DO NOT FORGET THIS LINE -->
<Item>application/xhtml+xml</Item>
<Item>text/css</Item>
<Item>application/javascript</Item>
<Item>image/svg+xml</Item>
</Array></Arg></Call>
<!--
<Call name="addExcludedMimeTypes"><Arg><Array type="String"><Item>some/type</Item></Array></Arg></Call>
-->
</New>
</Arg>
</Call>
</Configure>
Вот часть, которая должна заставить вас немного съежиться. Изменить bin\solr.cmd
...
set "SOLR_JETTY_CONFIG=--module=http,gzip"
...
set "SOLR_JETTY_CONFIG=--module=https,gzip"
...
--module=http
Обратите внимание, что уже есть. Просто добавьте ",gzip"
, чтобы он соответствовал строкам выше. Я бы предпочел найти лучший способ указать модуль gzip для загрузки, но я не знаю, как это сделать. Если вы знаете, как, ответьте на этот ответ и скажите мне, как, потому что я ненавижу изменять скрипт, который поставляется с продуктом - это кошмар для обслуживания, и, ну, я думаю, вы получите картину.
После этого перезапустите сервер solr, и теперь gzip должен быть включен - по крайней мере, для &wt=xml
, который отправляется обратно как Content-Type: application/xml
. Вы можете добавить то, что вам нужно, к etc/gzip.xml
и перезапустить сервер solr, чтобы он распознал ваши изменения.
Я проверил с и без сжатия 1000 документов. Для меня это была разница между 3,8 МБ и 637 КБ.
ПРИМЕЧАНИЕ: Я использовал solr 6.1.0, поэтому имейте это в виду, если вам нужно внести некоторые изменения. Я знаю, что файл .war ушел где-то около solr 5.4 или 5.5. – Brandon