Конфигурация 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 перед отправкой их клиенту?

Ответ 1

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

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

/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

Ответ 3

Он работал с предикатом:

predicate="exists['%{o,Content-Type}'] and regex[pattern='(?:application/javascript|text/css|text/html|text/xml|application/json)(;.*)?', value=%{o,Content-Type}, full-match=true]"