fastCGIキャッシングの問題を備えたPHP5.3は、さまざまな要求を受け入れます
質問
単純なキャッシュメカニズムを使用するStyleSheet/JavaScriptファイルバンドラーとミニファイアを設計しました。単にファイルにバンドルされた各ファイルのタイムスタンプを書き込み、それらのタイムスタンプを比較して、「マスターファイル」の書き換えを防ぎます。そうすれば、CSSまたはJSファイルが変更されたアプリケーションの更新(ここにあるWebサイト)の後、単一のリクエストが1回だけキャッシュをトリガーします。これ、および他のすべての要求には、master.css?v = 1234567などのコンパイルされたファイルが表示されます。
問題は、私の開発環境の下で、すべてのテストが合格し、統合がうまく機能し、すべてが期待どおりに機能することです。ただし、私のステージング環境では、PHP5.3がFastCGIでコンパイルされたサーバーでは、キャッシュされたファイルが無効なデータで書き直されるように見えますが、同じブラウザから要求されていない場合にのみです。
使用事例:
- Linuxの下で、Firefoxで最初のリクエストを行います。そのブラウザの他のすべてのリクエストで、すべてが期待どおりに機能します。
- Windows/Linux(IE7、IE8、Chromeなど)でリクエストを行うとすぐに、キャッシュファイルは無効なデータを取得しますが、開発中ではなくFASTCGIで実行されているステージングサーバーでのみです。
- Firefoxで別のリクエストを実行すると、ファイルを正しく再繰り返します。
Fastcgiはそれと関係があるのだろうかと思っていましたか?ブラウザのクライアントやオペレーティングシステムでさえ、サーバーサイドコードとは何の関係もないと思いました。
この問題は抽象的に説明されていることは知っていますが、具体的なコードを貼り付けるのは重いIMOですが、質問をクリアできればそれを行います。
コードのリモートデバッグを試してみましたが、すべてがまだ期待どおりに機能していることがわかりました。キャッシュされたファイルでさえ正しく記述されます。バグが発生すると、ファイルは予想されるデータで書き込まれますが、2秒後に無効なデータで書き戻されます - PHPが実行を終了した後! -
PHP関数を介して特定の要求に対してそのfastCGIキャッシュを無効にする方法はありますか?
解決
環境に応じて、Apacheの.htaccessを使用して何かを使用して、通常のCGIモードでこれらのリクエストを提供することを検討できます。これは、おそらく単純な追加ハンドラーと、CGIを直接指すアクションで実行できます。これは、Apacheの構成に直接アクセスできない、ある種の共有ホスティング環境に展開していることを前提としています。
FastCGIは一定の時間プロセスを持続するため、特定のバグは私を超えているかもしれませんが、最初の実行後に後の時点でファイルを密集する可能性があることは理にかなっています。
あまり助けがありません、私は知っていますが、いくつかのアイデアを与えるかもしれません...
編集:以下のコメントの.htaccessコードは次のとおりです
Options -Indexes +FollowSymLinks +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5.cgi