0

我计划在我的应用程序上使用omnifaces,它通过网络传输大量数据。我已经配置了web.xml文件,如下面的omnifaces展示中提到的那样

     <filter>
         <filter-name>gzipResponseFilter</filter-name>
         <filter-class>org.omnifaces.filter.GzipResponseFilter</filter-class>
    <init-param>
        <description>
            The threshold size in bytes. Must be a number between 0 and 9999. Defaults to 500.
        </description>
        <param-name>threshold</param-name>
        <param-value>500</param-value>
    </init-param>
    <init-param>
        <description>
            The mimetypes which needs to be compressed. Must be a commaseparated string. Defaults to the below values.
        </description>
        <param-name>mimetypes</param-name>
        <param-value>
            text/plain, text/html, text/xml, text/css, text/javascript, text/csv, text/rtf,
            application/xml, application/xhtml+xml, application/javascript, application/json
        </param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>gzipResponseFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

我正在使用 curl 来测试大小,但我没有注意到任何显着差异。 没有 gzip 配置

    curl http://localhost:8080/omnifaces-test/ > t

     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
    100  1666  100  1666    0     0   126k      0 --:--:-- --:--:-- --:--:--  147k

使用 gzip 配置

     curl http://localhost:8080/omnifaces-test/ > t
     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
    100  1666  100  1666    0     0   283k      0 --:--:-- --:--:-- --:--:--  406k  

你能告诉我为什么我在上面两个命令之间没有任何区别吗?

4

1 回答 1

2

GzipResponseFilter客户端也支持它时,它只返回压缩响应。这是由Accept-Encoding请求头决定的。如果客户端(在您的情况下为 curl)随请求一起发送Accept-Encoding: gzip标头,则过滤器将为大于 500 字节的响应打开 GZIP 压缩。

如果在您的 web 应用程序中启用后,curl 结果没有任何差异GzipResponseFilter,那么显然 curl 默认情况下不会设置Accept-Encoding: gzip标题。然后你会得到“正常”的回应。您需要查阅 curl 文档如何设置此标头。为所有请求打开 gzip 压缩没有任何意义;如果它毕竟不支持它,客户将如何解压缩它?

顺便说一句,这两个过滤器初始化参数已经是默认值。你可以从你的web.xml. 仅当您要指定与默认值不同的值时才需要指定它们。另请参阅文档

于 2012-07-30T10:51:18.343 回答