2015-05-22 2 views
3

Я пытаюсь применить сжатие gzip в Solr 5.1. Я понимаю, что Running Solr на Tomcat больше не поддерживается Solr 5.0, поэтому я попытался реализовать его в Solr.сжатие gzip не работает в Solr 5.1

Я скачал пристаней-сервлеты-9.3.0.RC0.jar и поместили его в моем веб-приложение \ папку WEB-INF, и добавил следующее в веб-приложение \ WEB-INF \ web.xml:

<filter> 
    <filter-name>GzipFilter</filter-name> 
    <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class> 
     <init-param> 
     <param-name>methods</param-name> 
     <param-value>GET,POST</param-value> 
     <param-name>mimeTypes</param-name> 
     <param-value>text/html,text/plain,text/xml,text/json,text/javascript,text/css,application/xhtml+xml,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> 

Однако, когда я начинаю Solr и проверить браузер, нет сжатия GZIP, и я только получаю следующее на выходе Заголовки ответов: Content-Type: текст/равнинный, кодировка = UTF-8 Transfer-Encoding : chunked

Есть ли что-нибудь, что я настрою неправильно или, возможно, пропустил? У меня также работает zookeeper-3.4.6.

ответ

1

Скачать кошерная версия 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 КБ.

+0

ПРИМЕЧАНИЕ: Я использовал solr 6.1.0, поэтому имейте это в виду, если вам нужно внести некоторые изменения. Я знаю, что файл .war ушел где-то около solr 5.4 или 5.5. – Brandon

Смежные вопросы