3

Web アプリケーションには、リクエストごとにクライアントに提供されるバージョン番号があるため、コードの更新 (ローリング更新) を検出し、最新の更新を利用するためにリロードするよう通知するポップアップを表示します。

しかし、サーバーでバージョン番号を更新した後、いくつかのリクエストが新しいバージョン番号を返し、別のリクエストが古いバージョン番号を返すという奇妙な動作が発生しているため、ページを数回リロードするまでポップアップがポップアップし続けます。

当初、apache が file_get_contents を介してディスクから読み取ったファイルをキャッシュしているのではないかと疑っていたので、バージョン番号をプレーン テキスト ファイルに保存する代わりに、各リクエストに含まれる php ファイルに保存するようになりましたが、まったく同じことが発生しています問題!

私が更新を行った後、ApacheまたはPHP自体が古い情報を提供する原因となっている可能性のあるアイデアはありますか?

編集:クライアントにサーバーへの一意の URL を生成させることができるため (書き換えによって処理できる)、ブラウザのキャッシュではないことを確認しましたが、一部のリクエストが古いバージョン番号を返し、一部が新しいバージョン番号を返すという同じ問題が引き続き発生します。ブラウザのキャッシュをクリアしても役に立たない

編集 2: 要求された応答ヘッダー

HTTP/1.1 200 OK
Date: Mon, 23 Jul 2012 16:50:53 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 500
Connection: close
Content-Type: text/html

編集 3:応答ヘッダーを取得するために再現しようとすると、コードを格納するバージョン管理されたフォルダーを作成し、関連するフォルダーを webroot にシンボリックリンクすることを含む完全な展開プロセスを実行することしかできませんでした。バージョン番号を変更するだけでは、それが発生するのに十分ではありません! だから、私が作成したシンボリックリンクに何らかの形で関連しているようです!

4

1 に答える 1

2

シンボリックリンクに変更がある場合、私は同じ問題を抱えています。https://bugs.php.net/bug.php?id=36555を見てください。おそらくあなたが探しているものです。

(このバグ レポートに記載されているように) realpath_cache_size を 0 に設定してみてください。

于 2012-09-07T16:05:47.120 に答える