Content-Encoding: deflateなHTTPレスポンスを作る
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 ...(略)..."