私はこれについて多くの調査を行い、多くの人に助けを求めましたが、まだ成功していません. 詳細はこちら...
私は、さまざまなデータ ファイルからデータを取得し、一時的な .csv ファイルにまとめて、人気のあるグラフ ライブラリである dygraphs を使用してグラフ化する Web サイトの開発に携わっています。Web サイトの大部分は PHP で記述されています。グラフ化されるデータを決定するパラメーターはユーザー セッションに保存されます。.csv はユーザー セッションにちなんで名付けられ、ダウンロード可能になります。.csv ファイルはスクリプトに書き込まれ、それが dygraphs オブジェクトに渡されます。そして、キャッシュなしのヘッダーが送信された場合でも、次のことがわかりました。
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
多くのユーザーは、セッションの途中で (十分な数の異なるグラフが生成された場合)、ページの古い静的レンダリング (セッションで以前にグラフ化したデータ) を表示するページを経験します。新しいリクエスト。ただし、奇妙になるだけです。
Firefox と Chrome の両方で開発者ツールを使用して確認しましたが、どちらのブラウザもキャッシュなしのヘッダーを問題なく受信しています。ページのソースを表示すると問題が発生した場合でも、ソースは正しいコンテンツです (テーブル/凡例も php を使用して動的に作成され、ソースは正しいテーブルを表示しますが、レンダリングされるのは古いコンテンツです)。グラフが表示される直前までページは正しくレンダリングされ始め、その後は古いコンテンツが表示されます。古いコンテンツは、完全に静的なオーバーレイであるかのように表示されます。キャッシュされたグラフには、同じ動的機能 (データ ポイント表示のロールオーバー、ズームとパンなど) がありません。また、正しいページがその下のどこかにあるかのように見えます。 (csv ファイルのダウンロード ボタンは、テーブルの大きさに応じて移動します。.csv のダウンロード ボタンをクリックしても、古い静的ページは何もしません。ただし、その下のページでそれを見つけることができれば、クリックして .csv をダウンロードすることができます。.csv のデータは正しいです)
これは、これまでの開発で見た中で最も奇妙なものの 1 つです。関連するその他の事実として、私が個人的に経験したすべての問題は、Chrome を使用しているときに発生したものです。これらの症状はいずれも Firefox ユーザーから報告されていません。IE ユーザーにも同じ問題がありました (IE ユーザーはクロム フレームの使用を余儀なくされています)。
私はこの時点で頭がいっぱいです。PHP ヘッダーを送信しました。IIS で php のキャッシュ プロファイルを "DisableCache" (または何でも) に設定しようとしました。結果ページにランダムなクエリ文字列を送信しようとしました。適切なメタ タグをすべて試しましたが、すべて成功しませんでした。