CGI::Application::PhotoGallery
perlmonks かなんかで発見。名前に興味があったので試しにインストールしてみた。
Cache::FileCache が /tmp に cache を作るのがちょっと気にならなかったので /var/tmp に作成されるように PhotoGallery.pm を変えたけど、それ以外はほとんど SYNOPSIS のまま。簡単だ。
#!/usr/local/bin/perl use CGI::Application::PhotoGallery; my $tmpl_dir = '/some/place/photo/tmpl/'; my $webapp = CGI::Application::PhotoGallery->new( PARAMS => { photos_dir => '/some/photo/dir', index_template => $tmpl_dir . 'photos_index.tmpl', single_template => $tmpl_dir . 'photos_single.tmpl', } ); $webapp->run();
本当は index_template, single_template は指定しなくても @INC に tmpl の PATH をつっこめばいいだけなんだけど、それもちょっとどうかなーと思って指定してみた。
最初にアクセスすると、一覧表示で見せる分の画像全部の thumbnail をつくるらしく、激しく自分自身の CGI へのアクセスをしていた。で、一度アクセスするとcache ができるので 2回目以降は早いかなーって期待したけど、一覧画面、画像表示、全部 CGI 経由のアクセスになるので mod_cgi ではちょっとつらいかも。
じゃあ mod_perl で、ということで httpd.conf 書き換えて apache 再起動。劇的に早くなった。一覧画面をアクセスすると CGI が何度も呼ばれるので mod_perl とかだと効果てき面なんだろうね。
ちょっと気になった点があって、photos_dir に更にディレクトリを置くと、何枚か(デフォルト4枚)サムネイルが表示されて、そのディレクトリへのリンクが表示されるようになってるんだけど、最初に発見された(ファイル名が若い)ディレクトリに入ってる写真はなぜか一番最後に表示されて、root にあるかのような表示をされる。なんだか説明しずらいんだけど、なんでそうなるのかわからないので困ってます。
後で PhotoGallery.pm 眺めてみるか。