在Wildfly配置GZip

use*_*155 11 java gzip wildfly

我在Wildfly服务器中配置GZip时遇到问题,在服务器上使用了以下配置:

<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>
Run Code Online (Sandbox Code Playgroud)

并且正确地成为了请求的Zip文件,但是我想设置要压缩的文件的最小大小以及我很难,任何人都知道如何设置服务器的最小大小然后将它们发送到顾客?

rzy*_*mek 13

扩展亚历山大的答案,我做了一些测试.奇怪的是,谓词只压缩大于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]")
Run Code Online (Sandbox Code Playgroud)

请注意,gzip过滤器将在服务器重新加载后开始工作.您可以使用cli的命令执行此操作:reload.

要测试过滤器是否已启用,我使用了:

wget $MY_URL -S --header="accept-encoding: gzip" \
  -O /dev/null 2>&1| grep Content-Encoding
Run Code Online (Sandbox Code Playgroud)

  • **更新**:当你使用`predicate [value]`时,Wildfly 10会显示欠警告.你应该改为`谓词(值)`.但是,Wildfly 9不接受`谓词(值)`,它引发了一个ParseException.`谓词不是min-content-size [2048]使用旧式方括号来定义谓词,将在以后的版本中删除.谓词[value]应该改为谓词(value)` (4认同)

Ale*_*der 5

在underow min-content-size中有一个谓词, 所以你可以使用predicate=min-content-size[500]

由于缺少文档,我在https://github.com/undertow-io/undertow/tree/master/core/src/main/java/io/undertow/predicate找到了可用的谓词