キャッシュ制御ヘッダーの制御方法を教えてください (私が作成したキャッシュ関数に影響します)
etag とファイル キャッシュに依存して処理する PHP 制御のキャッシュを作成しました
ブラウザーが etag を送信する場合は、比較しますetag が一致している場合は、304 を直接送信します。etag が一致していない場合は、ファイル キャッシュを直接読み取り、現在のサーバー キャッシュの etag
を送信します (ファイル キャッシュと etag の更新は
ここで、突然応答が 304 を返さないことに気付きました。確認したところ、このアドレスのサーバーの http 応答ヘッダーが、cache-control: no-cache
を返していたことがわかりました。サーバーのキャッシュがチェックされ、サーバーは最初の応答を自動的に送信します (私の etag も送信されます)。その結果、サーバー側にキャッシュがあるかどうかに関係なく、ブラウザーは追加されません。 etag をリクエスト ヘッダーに追加しても、サーバーはそれを処理するときに受信しません。etag に対しては、それが最初のリクエストとみなされ、ファイル キャッシュが再読みされて、etag が再度送信されます... (応答 200)
大体こんな感じですが、これでは使いたいものが失われます 304 ダイレクトキャッシュの効果が出てきます。
違いを見ると、通常のデータ、約 10KB は正常に実行されています (キャッシュなしの最初のリクエストは 130 ミリ秒、キャッシュありの最初のリクエストは 90 ミリ秒、その後は 16 ミリ秒以下)
しかし、これは304 を送信しない場合 (常に (キャッシュなし送信)、データは 304B のみです (ただし、キャッシュ モジュールなしでも、サーバーの計算により約 90 ミリ秒かかります)。
データの返送が一貫していないことが原因でしょうか。この 304B データは 12KB に拡張され、キャッシュなしヘッダーは引き続き送信され、20kB への増加は同じです。
それから私は混乱しました...何が起こったのか分かりません。
(天地の良心、すべてのコードは私によって書かれており、1 つのヘッダー (etag) を除いて他の etag は一切送信されません)
-----解決策のアイデア- --------------------
その理由は何ですか?
ノーキャッシュを送信し続けるのはなぜですか?おそらくサーバーの設定が原因だと思われます。