在Wildfly配置GZip

时间:2015-03-11 19:57:29

标签: 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>

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

3 个答案:

答案 0 :(得分: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]")

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

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

它与谓词一起使用:

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]"