1時間に数千回アクセスのある画像が数千枚あるとします。
(中には数十回しかアクセスが無い画像もあります)
これら全てが、最後の更新から1時間を経過していた場合は、
画像を更新したいと考えております。
(例えば、画像に更新時刻を合成する等)
これらの条件がある中で、サーバに対して、
できる限り負荷を少なくする一番のお勧め方法を教えて下さい。
<img src="hoge.php" /> として呼び出させて、
通常は hoge.jpg を読み込んで表示し、
最終更新時刻から1時間が経過していたら更新してから読み込んで表示する。
と、考えたのですが、凄く無駄な気がします。
そこで、<img src="hoge.jpg" /> として呼び出させて、
.htaccess か何かで、画像を返す前に、最終更新時刻をチェックし、
1時間が経過していた場合のみ、hoge.jpg を表示する前に更新する、
という事はできないのかな?とも思いました。
これ以上の事は想像がつきません。
一般的な共用レンタルサーバ(SAKURA)ですので、
サーバの設定を変える等は難しいです。
phpでしたら、少しは書けます。
お勧めの方法を教えて下さい。
よろしくお願い致します。
http://httpd.apache.org/docs/2.2/rewrite/advanced.html#on-the-fly-content
We wish to dynamically generate content, but store it statically once it is generated. This rule will check for the existence of the static file, and if it's not there, generate it. The static files can be removed periodically, if desired (say, via cron) and will be regenerated on demand.
cronで定期的にチェックして期限が過ぎたら消し、リクエストがあったらファイルがあるかチェックして、あればそのまま表示、なければ生成・保存・リダイレクトするphpへ転送する、という方法になります。
2.2でも使えるのでsakuraでもOKなんじゃないかと思います。
[追記]
1ディレクトリ1ファイルになってしまいますが、
ってのでも良い気がしました。
こちらの方が画像有効時に余計な条件チェックがないので負荷が低いと思います。
あと、mod_expiresも使えるそうですので設定もお忘れ無く。
http://httpd.apache.org/docs/2.2/ja/mod/mod_expires.html
今更ですが……
は、.htaccessで、相手が静的ファイルなので、
と出きるんじゃないかと思います。こちらの方が負荷が低くなります。
2014/10/23 21:33:23ありがとうございます。
2014/10/24 21:20:37時間ができ次第、試してみます。