Perlbal の web server に Apache の mod_expires と同じ代替期間指定構文ってやつで Expires を指定できるプラグイン、Perlball::Plugin::Expires というのを書いた。
使い方はこんなん。
LOAD Expires
CREATE SERVICE web
SET role = web_server
SET listen = 127.0.0.1:8000
SET docroot = /path/to/docs
SET plugins = Expires
Expires default = access plus 1 day 12 hours
Expires image/gif = access plus 10 years
ENABLE web
Content-Type 別に指定できるのも同じ。ExpiresDefault 的なのは default を使う。mod_expires には A<時間>, M<時間> という形式もあるけどそっちはとりあえず対応してない(使ったことないから…)。
Perlbal には汎用的にレスポンスヘッダを追加できる Perlbal::Plugin::Addheader というのがあるのだけれど、Expires を指定するのに、
ADDHEADER static Expires [% {use HTTP::Date;HTTP::Date::time2str(time() + 2592000)} %]
こんなふうに書かないといけなくてあんまりだなぁと思ったので書いてみた次第。
どうぞご利用ください。