191

ウィキペディアのプラグマヘッダーについて読みました。

「プラグマ:no-cacheヘッダーフィールドは、リクエストで使用することを目的としたHTTP / 1.0ヘッダーです。これは、サーバーではなく、新しいバージョンのリソースが必要であることをブラウザがサーバーと中間キャッシュに通知するための手段です。ブラウザにリソースをキャッシュしないように指示します。一部のユーザーエージェントは応答でこのヘッダーに注意を払いますが、HTTP /1.1RFCはこの動作に依存しないように特に警告します。」

しかし、私はそれが何をするのか理解していませんか?値がであるヘッダーと値もであるCache-Controlヘッダーの違いは何ですか?no-cachePragmano-cache

4

3 に答える 3

225

PragmaはHTTP/1.0実装cache-controlであり、同じ概念のHTTP/1.1実装です。これらは両方とも、クライアントが応答をキャッシュするのを防ぐことを目的としています。古いクライアントはHTTP/1.1をサポートしていない可能性があるため、そのヘッダーはまだ使用されています。

于 2012-04-25T11:00:48.937 に答える
103

Pragmaクライアントによる要求にのみ適用可能として定義されていることを除いて、違いはありませんが、クライアントCache-Controlの要求とサーバーの応答の両方で使用できます。

したがって、標準に関する限り、それらは、クライアントが要求を行うことと、サーバーがクライアントから要求を受け取ることの観点からのみ比較できます。http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32は、シナリオを次のように定義しています。

HTTP / 1.1キャッシュは、クライアントが「Cache-Control:no-cache」を送信したかのように「Pragma:no-cache」を処理する必要があります。新しいプラグマディレクティブはHTTPで定義されません。

  Note: because the meaning of "Pragma: no-cache as a response
  header field is not actually specified, it does not provide a
  reliable replacement for "Cache-Control: no-cache" in a response

私が上記を読む方法:

  • クライアントを作成していて、必要な場合no-cache

    • サーバーでサポートされてPragma: no-cacheいるかどうかわからない場合があるため、リクエストで使用するだけです。Cache-Control
    • ただし、返信では、キャッシュするかどうかを決定するために、Cache-Control
  • サーバーを作成している場合:

    • クライアントからのリクエストを解析する際には、Cache-Control;を確認してください。見つからない場合は、を確認してロジックPragma: no-cacheを実行します。Cache-Control: no-cache
    • 返信では、を提供しますCache-Control

もちろん、現実はRFCに書かれていることや暗示されていることとは異なるかもしれません!

于 2013-02-24T08:33:24.257 に答える
25
于 2018-04-03T19:07:40.223 に答える