実際にWebサーバーにアクセスしてHTTP::Responseを作る、というアプリケーションを書く時にいっつも気になるのがこのHTTP::Responseのcontentの部分って全部メモリに乗っかるということ。one linerでサクッと一個ファイルをダウンロードするくらいならいいけど、クローラーとかで永続的にプロセスが生きている場合はこのメモリがどんどんかさばってくる。というわけで、HTTP::Response::OnDisk書きました。
API的にHTTP::Responseと互換性のあるようにしたので、使う時は今まで
use HTTP::Response;
my $res = HTTP::Response->new(200, "OK");
$res->add_content(...);
とかしてたところを
use HTTP::Response::OnDisk;
my $res = HTTP::Response::OnDisk->new(200, "OK");
$res->add_content(...);
とするだけ。これでHTTP::Responseの中身は一時ファイルに全部格納される。先ほどCPANにアップロード。
コメント