Content-Encoding: deflateなHTTPレスポンスを作る

投稿者 akira 2010-03-11 07:26:00 GMT

Content-Encoding: deflateなHTTPレスポンスを返させる簡単な方法はないかなと探してみたらRackがサポートしていた。どうやるかというと:

use Rack::Deflater

これだけ。ruファイルに書いておけばよい。発端がちょっとしたテストのためだったので、内容はなんでもよく、とにかくdeflateで返してくれれば十分というわけで、こんなのを書いて目的を達成できた:

module Rack
  class Foo
    def call(env)
      r = Response.new
      r.write "abc123"*100
      r.finish
    end
  end
end
use Rack::Deflater
run Rack::Foo.new

実際にアクセスしてみるとこうなる:

$ ruby -r open-uri -e 'open("http://localhost:9292/"){|h| p h.read}'
"abc123abc123 ...(略)..."
$ ruby -r open-uri -e 'open("http://localhost:9292/", "Accept-Encoding"=>"deflate"){|h| p h.read}'
"\355\3011\001\000 ...(略)..."
トラックバック

トラックバックリンク:
http://arika.org/diary/trackbacks?article_id=2714

Leave a comment

コメント