2009-06-26 7 views
2

イメージ、css、javascriptでウェブルートの外にディレクトリがあります。
これらのファイルは頻繁に変更されます。
ファイルを探し出し、MIMEタイプを取り出してブラウザに出力するスクリプトを書くことができました。

私はファイルを見つけて、webaccessableディレクトリにコピーし、ヘッダーの場所を使ってそのファイルにリダイレクトすることができました。ファイルが再度要求されると、最初にファイルが変更されているかどうかチェックされ、再度リダイレクトされます。phpのreadfile()を使うかリダイレクトしてイメージファイルを表示しますか?

どのようなパフォーマンスが向上しますか?すべての要求は1つの読み取りファイル、またはすべての要求はタイムスタンプのチェックとリダイレクト(1つではなく2つの要求)

答えて

2

最初のパフォーマンスルール:ベンチマークは推測しません。

すぐに最初のルールを破って、ネットワークのラウンドトリップを排除するため、readfileが速くなると推測します。

どの程度のパフォーマンスが必要ですか?これを行う最も速い方法は、別の静的コンテンツWebサーバーを完全に別のマシン上のサブドメイン(たとえばhttp://static.mysite.com/foo.jpg)にセットアップし、そのWebサーバーで頻繁に変更されるimage/css/javascriptファイルを処理させることです。

+0

の私は(私はちょうどプロファイリングを行うxdebugのを得ることができた)どのようにベンチマークウェブサーバをするのか分からない、と現在そのを把握するために多くの時間を持っていません私は静的なコンテンツサーバーのアイデアが好きですが、おそらく今のところは多分少しです。 –

1

もう1つの提案:ファイルシステムを管理している場合は、Webアクセス可能なディレクトリに画像ファイルのsymbolic linkを作成することができますか? exec()を使用して 'ln'コマンドを呼び出すか、またはと入力すると、PHP symlink()関数が機能する可能性があります。

+0

私はシンボリックリンクについて考えましたが、それらのディレクトリにはWebアクセス可能なディレクトリには必要ないphpファイルも含まれています。 –

1

ディレクトリ全体ではなく、ファイルへのシンボリックリンクはいかがですか?あなたはそれを '静的な'ファイル名にしてから、Webサーバに修正タイムスタンプチェックとキャッシングをさせることができます。これははるかに高速です。そう、

ベンチマークしかし、もちろん:)

関連する問題