0

ネットワーク経由で大量のデータを転送するアプリケーションで 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  

上記の 2 つのコマンドに違いがない理由を教えてください。

4

1 に答える 1

2

GzipResponseFilterクライアントもサポートしている場合、 は gzip された応答のみを返します。これは、Accept-Encoding要求ヘッダーによって決定されます。クライアント (この場合は curl)Accept-Encoding: gzipがリクエストと共にヘッダーを送信すると、フィルターは 500 バイトを超えるレスポンスに対して GZIP 圧縮をオンにします。

Web アプリケーションでを有効にした後、curl の結果に違いが見られない場合GzipResponseFilter、明らかに curl はデフォルトでAccept-Encoding: gzipヘッダーを設定していません。その後、「通常の」応答が得られます。このヘッダーの設定方法については、curl のドキュメントを参照する必要があります。すべてのリクエストに対してgzip 圧縮を有効にしても意味がありません。結局サポートしていない場合、クライアントはどのように解凍するのでしょうか?

ちなみに、これら 2 つのフィルター初期化パラメーターは、既にデフォルト値になっています。からそれらを省略できますweb.xml。デフォルト以外の値を指定したい場合にのみ指定する必要があります。ドキュメントも参照してください。

于 2012-07-30T10:51:18.343 に答える