読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

レスポンスをgzip圧縮する

JSF OmniFaces GlassFish

今の案件では海外からのアクセスもあるとのことで、通信のgzip圧縮入れた検証とかしようと思ってるのですが、そもそもどういう選択肢があるのか意外と知らなかったり…。

多分一番簡単なのは、フロント側のWebサーバ(ApacheやNginx)で設定する方法なのだと思います。

うちではイントラでユーザ数があまり多くない場合、フロント立てずに直接アプリケーションサーバ利用もあるのですが、GlassFishについて調べたらCompressionの設定がありました。

f:id:kikutaro777:20150325194749j:plain

以下のCompressionをonかforceにして、Mime Typesも必要に応じてtext/javascriptなど追加したり、圧縮する最低ラインを設定できたりするようです。

f:id:kikutaro777:20150325194755j:plain

ちょっと試してみたのですが、なんかうまくできなかった…orz
Stack Overflowのこの辺りも似た感じなのかなぁと(ここの話はcacheだけ?)

stackoverflow.com

で、もう1つ海外で結構引っかかったのは先日ブログでも紹介したOmniFacesを利用するというものでした。

kikutaro777.hatenablog.com

GzipResponseFilterという便利フィルタが用意されています。

GzipResponseFilter - OmniFaces Showcase

設定はweb.xmlに以下を追加するだけでした。

<filter>
    <filter-name>gzipResponseFilter</filter-name>
    <filter-class>org.omnifaces.filter.GzipResponseFilter</filter-class>
    <init-param>
        <description>圧縮かける閾値のバイト。0から9999が指定可能で、デフォは500。</description>
        <param-name>threshold</param-name>
        <param-value>500</param-value>
    </init-param>
    <init-param>
        <description>MIME TYPEの指定</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>

Filterの適用前後を比べてみると次のような感じに。

gzip圧縮なし
f:id:kikutaro777:20150325200025j:plain

gzip圧縮あり
f:id:kikutaro777:20150325200117j:plain

以下辺りを参考に確認できるサイトでもみてみました。

syncer.jp
web-marketing.zako.org


f:id:kikutaro777:20150325200130j:plain

f:id:kikutaro777:20150325200137j:plain

計測した画面はPrimeFacesのコンポーネントを結構多く使ってる画面だったのですが、結構圧縮されるものだなぁと。

実際の効果や、逆にオーバーヘッドとかも気になるけど、とりあえずこれでいこうかなぁ…。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村