Compress HTTP response with H2O

H2Oでレスポンスボディを圧縮して送る方法を調べました。

compress: ONを入れるだけ。

user: h2o

access-log:
    <<: !file /etc/h2o/conf.d/access-log.conf
error-log: /var/log/h2o/error.log

pid-file: /var/run/h2o/h2o.pid
expires: 1 day
compress: ON

hosts:
  <<: !file /etc/h2o/conf.d/hosts_lorentzca.me.conf
  <<: !file /etc/h2o/conf.d/hosts_blog.lorentzca.me.conf
  <<: !file /etc/h2o/conf.d/hosts_ponpokopon.me.conf
  <<: !file /etc/h2o/conf.d/hosts_ghost.ponpokopon.me.conf

圧縮対象に使われるmime type。全部圧縮対象なのかな...?

動作確認

curlでjsとかcss(圧縮対象のファイル)にAccept-Encodingヘッダを付けてリクエストを送り圧縮されるか確認。

  • こんな感じで圧縮後のバイナリが返ってくればOK
$ curl -H "Accept-Encoding:gzip" https://blog.lorentzca.me/assets/js/index.js
UMW-V\;B?{9M`LjTjcᖹVXXmT93X+b\.jip2
                                   W"(H"+ag^[R&Jk%w$IFv5J͹2~vPͶ6=+rMJgV@2BD4P%hk5r+HzĭbΑ,`a),
℞KMix+ 4}zl0Si3^N                                                                            V;p.(˵ٔWD˪aSmu']ࣺ(Y{/B8/mqeJ}PI* <w]6ؠ8ðA
                 e~oq6bj=Zf}/:oZ'>n]U$\usĹ;~\j#߭_zxٙ_{%