使用omnifaces进行gzip设置

时间:2012-07-30 01:34:09

标签: jsf omnifaces

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

     <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  

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

1 个答案:

答案 0 :(得分:2)

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

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

顺便说一下,这两个过滤器初始化参数已经是默认值。您可以从web.xml中省略它们。只有在要指定不同于默认值的值时,才需要指定它们。另请参阅documentation