2015-03-11 12 views
9

Я с проблемой, чтобы настроить GZip в моем Wildfly сервере использовали следующую конфигурацию на сервере:Конфигурация GZip в Wildfly

<subsystem xmlns="urn:jboss:domain:undertow:1.2"> 
     <buffer-cache name="default"/> 
     <server name="default-server"> 
      <http-listener name="default" socket-binding="http"/> 
      <host name="default-host" alias="localhost"> 
       <location name="/" handler="welcome-content"/> 
       <filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js'] or path-suffix['.xhtml']"/> 
       <filter-ref name="server-header"/> 
       <filter-ref name="x-powered-by-header"/> 
      </host> 
     </server> 
     <servlet-container name="default"> 
      <jsp-config/> 
      <websockets/> 
     </servlet-container> 
     <handlers> 
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> 
     </handlers> 
     <filters> 
      <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/> 
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/> 
      <gzip name="gzipFilter"/> 
     </filters> 
    </subsystem> 

И стал Zip файл запроса правильно, однако я хотел бы установить минимальный размер для файлов, которые должны быть заархивированы и что мне сложно, кто-нибудь знает, как установить минимальный размер для сервера, сделайте zip, прежде чем отправить их клиенту?

ответ

9

Развивая ответ Александры я сделал некоторые тесты. Как ни странно, предикат только для сжатия файлов размером более 500 байт - not min-content-size[500].

Чтобы настроить его с помощью jboss-cli.sh запустить этот скрипт:

/subsystem=undertow/configuration=filter/gzip=gzipFilter:add() 
/subsystem=undertow/server=default-server/host=default-host/\ 
    filter-ref=gzipFilter:add(predicate="not min-content-size[500]") 

Обратите внимание, что GZIP фильтр начнет работать после того, как сервер перезагрузки. Вы можете сделать это, используя команду cli :reload.

Чтобы проверить, если включен фильтр я использовал:

wget $MY_URL -S --header="accept-encoding: gzip" \ 
    -O /dev/null 2>&1| grep Content-Encoding 
+2

** Обновление **: Wildfly 10 показывает под предупреждением, когда вы используете 'предикат [значение]'. Вы должны перейти к 'predicate (value)'. Но Wildfly 9 не принимает 'предикат (значение)', он вызывает ParseException. 'Predicate not min-content-size [2048] использует квадратные скобки старого стиля для определения предикатов, которые будут удалены в будущей версии. предикат [значение] следует изменить на предикат (значение) ' –

+1

' min-content-size [500] 'работает с заголовком Content-Length. Если он не существует, этот предикат возвращает false. Таким образом, значение 'not min-content-size [500]' равно: apply gzip Если ответ имеет Content-Length> 500, либо ответ не имеет заголовка Content-Length. Чтобы изменить последнюю часть предиката, вы можете изменить ее на 'exist ['% {o, Content-Length}'], а не min-content-size [500]' или на 'max-content-size [500]' , – McGiogen

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