私はPragmaについて読みました Wikipedia のヘッダー:
「Pragma:no-cache headerフィールドは、リクエストで使用することを目的としたHTTP/1.0ヘッダーです。ブラウザは、サーバーではなく、リソースの最新バージョンが必要であることをサーバーおよび中間キャッシュに伝える手段です。ブラウザにリソースをキャッシュしないように伝えます。一部のユーザーエージェントは応答でこのヘッダーに注意を払っていますが、HTTP/1.1 RFCはこの動作に依存することに対して特に警告しています。」
しかし、私はそれが何をするのか理解していませんか?値がCache-Control
であるno-cache
ヘッダーと値もno-cache
であるPragma
の違いは何ですか?
Pragma
はHTTP/1.0実装であり、cache-control
は同じ概念のHTTP/1.1実装です。どちらも、クライアントが応答をキャッシュするのを防ぐためのものです。古いクライアントはHTTP/1.1をサポートしていない可能性があるため、そのヘッダーはまだ使用されています。
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で記述または暗示されているものとは異なる場合があります。
| Stop using | Replace with |
| (HTTP 1.0) | (HTTP 1.1 - 1999) |
|---------------------|----------------------------------|
| Expires: [date] | Cache-Control: max-age=[seconds] |
| Pragma: no-cache | Cache-Control: nocache |
1999年以降、まだExpiresまたはPragmaを使用している場合は、間違っています。
私はあなたにStackoverflowを見ています:
200 OK Pragma: no-cache Content-Type: application/json X-Frame-Options: SAMEORIGIN X-Request-Guid: a3433194-4a03-4206-91ea-6a40f9bfd824 Strict-Transport-Security: max-age=15552000 Content-Length: 54 Accept-Ranges: bytes Date: Tue, 03 Apr 2018 19:03:12 GMT Via: 1.1 varnish Connection: keep-alive X-Served-By: cache-yyz8333-YYZ X-Cache: MISS X-Cache-Hits: 0 X-Timer: S1522782193.766958,VS0,VE30 Vary: Fastly-SSL X-DNS-Prefetch-Control: off Cache-Control: private
tl; dr:Pragma
はHTTP/1.0のレガシーであり、Internet Explorer 5またはNetscape 4.7以降は必要ありません。