本当に長い質問で申し訳ありません。私はしばらくこれをトラブルシューティングしてきましたが、すべてを共有することにしました。
私は vBulletin 5.1.5 を実行しています (これについては苦労しないでください)。問題が vBulletin ソフトウェアにあるのか、それとも Apache の問題なのかを調べようとしています。
システム: vBulletin 5.1.5、Apache 2.4.7、mod_expires、memcached
この問題は、ローカル ブラウザーに関係なく発生します (Chrome と Firefox の両方で発生します)。
vBulletin 5.1.4 から 5.1.5 にアップグレードしたところ、すぐにこの問題が発生し始めました。vBulletin は、これは Apache サーバーの問題であり、コンテンツ/ヘッダーのみをキャッシュなしとして設定するか、そのままにしておくと述べています。
誰かがスレッドに返信を投稿してからメイン フォーラム ページに戻った場合、新しい返信は最新として表示されません (トピックにはまだ 0 件の返信が表示されます)。その後スレッドに戻っても、ページを更新するまで返信は表示されません。
vBulletin システム キャッシュをクリアし、ドメインのすべての Cookie を削除し、ローカル キャッシュをクリアしました。
Chrome 開発者ツール ([ネットワーク] タブ) を使用すると、次のように表示されます。
ページが更新されたとき、vBulletin は HTTP ヘッダーの Date: をリセットすべきではありませんか?
元の投稿は 15:12:05 UTC に作成します。15:12:10 UTC の直後に返信します。ページの HTTP ヘッダーには、引き続き Date: が 15:12:05 UTC として表示されます。ページを離れてメイン フォーラム ページに移動し、投稿に戻ります。更新するまで、HTTP Header Date: as 15:12:05 UTC が表示されます。そのため、ページに更新があることをクライアントに通知していません。これは vBulletin によって設定されていますね。ページは動的に作成されているので?
構成ファイルでデバッグをオンにして、タイムスタンプを調べました ((レンダリングされた各ページの下部にある vbulletin によって生成されます):
最初の投稿 - 現在の時間: 2015 年 2 月 4 日 (水) 11:31:39 -0500 コメント後 - 現在の時間: 2015 年 2 月 4 日 (水) 11:31:39 -0500 フォーラムのリンクをクリック - 現在の時間: 2015 年 2 月 4 日 (水) 11 :31:03 -0500 更新をヒット - 現在時刻: 2015 年 2 月 4 日水曜日 11:33:12 -0500 トピックをもう一度クリック - 現在時刻: 2015 年 2 月 4 日水曜日 11:31:39 -0500 更新をクリック - 現在時刻:水曜日、2015 年 2 月 4 日 11:35:15 -0500
フォーラムのリンクをクリックすると、(新しい投稿をしたにもかかわらず) 過去に戻ってしまうことに注意してください。リフレッシュして、現在の時間に戻ります。
次に、トピックをもう一度クリックすると、タイムスタンプが最初の投稿時間と一致します。コメントを作成した後の時間ではありません。もう一度更新すると、現在の時刻に戻り、返信が表示されます。
ログを見る:
- 新しいスレッド GET /forums/new-content/44 HTTP/1.1 をクリックします。
- 投稿を POST /forums/create-content/text/ HTTP/1.1 にします
- ページが更新されます GET /forums/forum/general/test-forum/28305-this-is-another-new-topic
- 返信を追加 POST /forums/create-content/text/ HTTP/1.1
- 返信が表示されます POST /forums/create-content/loadnode HTTP/1.1
- 投稿の親フォーラムに行きます GET /forums/forum/general/test-forum HTTP/1.1
- 投稿、ページ表示、POST /forums/ajax/api/node/incrementNodeview HTTP/1.1 をクリックしてから、GET /forums/foru...-another-testt HTTP/1.1 をクリックします。
すべてのステータス コードは 200 です。アイテム 6 と 7 には、Cache-Control: max-age=3600 と元の投稿の日付と時刻があります。
サーバーとクライアントの間で有効期限がどのように機能するかについて、私は確信が持てないでしょうか? クライアントからサーバーへのプロセスは、元のページをプルダウンしてローカルにキャッシュするようなものではないでしょうか。後で同じページをリクエストし、ヘッダーのリクエストをサーバーに送信して、ページに新しい時間があるかどうかを確認し、一致する場合はローカル コピーをプルし、一致しない場合は新しいコピーを送信します。Apache には、ページが更新されたかどうかがわかりません。これは、vBulletin によって生成されたものですよね?
何かご意見は?