人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

サーバの負荷と、phpの作りにつきまして。

1時間に数千回アクセスのある画像が数千枚あるとします。
(中には数十回しかアクセスが無い画像もあります)

これら全てが、最後の更新から1時間を経過していた場合は、
画像を更新したいと考えております。
(例えば、画像に更新時刻を合成する等)

これらの条件がある中で、サーバに対して、
できる限り負荷を少なくする一番のお勧め方法を教えて下さい。


<img src="hoge.php" /> として呼び出させて、
通常は hoge.jpg を読み込んで表示し、
最終更新時刻から1時間が経過していたら更新してから読み込んで表示する。
と、考えたのですが、凄く無駄な気がします。

そこで、<img src="hoge.jpg" /> として呼び出させて、
.htaccess か何かで、画像を返す前に、最終更新時刻をチェックし、
1時間が経過していた場合のみ、hoge.jpg を表示する前に更新する、
という事はできないのかな?とも思いました。

これ以上の事は想像がつきません。

一般的な共用レンタルサーバ(SAKURA)ですので、
サーバの設定を変える等は難しいです。

phpでしたら、少しは書けます。

お勧めの方法を教えて下さい。

よろしくお願い致します。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント

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


worldtravelさんのコメント
> cronで定期的にチェックして期限が過ぎたら消し、 > リクエストがあったらファイルがあるかチェックして、 > あればそのまま表示、なければ生成・保存・リダイレクト > するphpへ転送する、という方法になります。 > 2.2でも使えるのでsakuraでもOKなんじゃないかと思います。 ありがとうございます。 これがいいですね! こちらの都合の他との兼ね合いがあるので、確認してみます。

TransFreeBSDさんのコメント
今更ですが…… >> RewriteCond %{REQUEST_URI} !-U << は、.htaccessで、相手が静的ファイルなので、 >> RewriteCond %{REQUEST_FILENAME} !-f << と出きるんじゃないかと思います。こちらの方が負荷が低くなります。

worldtravelさんのコメント
ありがとうございます。 時間ができ次第、試してみます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ