すべてのトラフィックをフロントコントローラーにルーティングするPHPアプリケーションで基本的なPHPファイルキャッシングドライバーを作成しようとしています。たとえば、apachemod_proxy_balancerを使用した次の簡略化されたセットアップを想定します。
単一サーバー環境では、リクエストURIに一致するディレクトリ構造のディスクにリクエスト応答をキャッシュします。次に、次のような単純なapache書き換えルールにより、apacheは静的キャッシュファイル(存在する場合)を返し、PHPプロセスを完全に回避できます。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /front_controller.php [L]
明らかに、これは負荷分散環境では問題があります。これは、キャッシュファイルが、要求が処理されて結果がキャッシュされた特定のPHPサーバー上のディスクにのみ書き込まれるためです。
問題を解決する..。
したがって、この問題を解決するために、いくつかのコードをノックアウトして、個々のバックエンドPHPサーバーにキャッシュデータをロードバランサーに書き込み/削除させることができると考えました。ただし、mod_proxy_balancerの機能(および実際には他の負荷分散オプション)についてはほとんど知らないため、次の質問に対する外部検証が必要です。
そして質問...
- 上記のRewriteRulesのような何らかの形式のチェックを実行して、バックエンドサーバーの1つにリクエストを送信する前に、前面のロードバランサーに静的ファイルを提供させることは可能ですか?
- これもお勧めですか?ロードバランサーがトラフィックを排他的にルーティングし、静的コンテンツの提供に煩わされないようにする必要がありますか?
- PHPサーバーレベルでキャッシュされたファイルに許容可能なTTLを使用し、許容されたレベルの古いキャッシュの重複を処理する方がよいでしょうか。
最後に、これが広すぎるか、すでに回答されている場合は、お詫びします。負荷分散の問題に関する前述の無知の結果として、何を検索すればよいのかよくわかりません。