Zum Hauptinhalt springen

5.2.1. Request Cache-Control Directives (请求缓存控制指令)

🇬🇧 English

This section defines cache directives that can be used by a client in an HTTP request.

5.2.1.1. max-age

Argument: delta-seconds

The "max-age" request directive indicates that the client is unwilling to accept a response whose age is greater than the specified number of seconds. Unless the max-stale request directive is also present, the client is not willing to accept a stale response.

This directive uses the token form of the argument syntax: e.g., 'max-age=5' not 'max-age="5"'. A sender SHOULD NOT generate the quoted-string form.

5.2.1.2. max-stale

Argument: delta-seconds

The "max-stale" request directive indicates that the client is willing to accept a response that has exceeded its freshness lifetime. If max-stale is assigned a value, then the client is willing to accept a response that has exceeded its freshness lifetime by no more than the specified number of seconds. If no value is assigned to max-stale, then the client is willing to accept a stale response of any age.

This directive uses the token form of the argument syntax: e.g., 'max-stale=10' not 'max-stale="10"'. A sender SHOULD NOT generate the quoted-string form.

5.2.1.3. min-fresh

Argument: delta-seconds

The "min-fresh" request directive indicates that the client is willing to accept a response whose freshness lifetime is no less than its current age plus the specified time in seconds. That is, the client wants a response that will still be fresh for at least the specified number of seconds.

This directive uses the token form of the argument syntax: e.g., 'min-fresh=20' not 'min-fresh="20"'. A sender SHOULD NOT generate the quoted-string form.

5.2.1.4. no-cache

The "no-cache" request directive indicates that a cache MUST NOT use a stored response to satisfy the request without successful validation on the origin server.

5.2.1.5. no-store

The "no-store" request directive indicates that a cache MUST NOT store any part of either this request or any response to it. This directive applies to both private and shared caches. "MUST NOT store" in this context means that the cache MUST NOT intentionally store the information in non-volatile storage, and MUST make a best-effort attempt to remove the information from volatile storage as promptly as possible after forwarding it.

This directive is NOT a reliable or sufficient mechanism for ensuring privacy. In particular, malicious or compromised caches might not recognize or obey this directive, and communications networks might be vulnerable to eavesdropping.

Note that if a request containing this directive is satisfied from a cache, the no-store request directive does not apply to the already stored response.

5.2.1.6. no-transform

The "no-transform" request directive indicates that an intermediary (whether or not it implements a cache) MUST NOT transform the payload, as defined in Section 5.7.2 of [RFC7230].

5.2.1.7. only-if-cached

The "only-if-cached" request directive indicates that the client only wishes to obtain a stored response. If it receives this directive, a cache SHOULD either respond using a stored response that is consistent with the other constraints of the request, or respond with a 504 (Gateway Timeout) status code. If a group of caches is being operated as a unified system with good internal connectivity, a member cache MAY forward such a request within that group of caches.


🇨🇳 中文

本节定义客户端可以在HTTP请求中使用的缓存指令。

5.2.1.1. max-age

参数: delta-seconds

"max-age"请求指令表示客户端不愿意接受年龄大于指定秒数的响应。除非还存在max-stale请求指令,否则客户端不愿意接受过期响应。

此指令使用参数语法的令牌形式: 例如,'max-age=5'而不是'max-age="5"'。发送方不应该 (SHOULD NOT) 生成引号字符串形式。

5.2.1.2. max-stale

参数: delta-seconds

"max-stale"请求指令表示客户端愿意接受已超过其新鲜度生命周期的响应。如果为max-stale分配了值,则客户端愿意接受超过其新鲜度生命周期不超过指定秒数的响应。如果没有为max-stale分配值,则客户端愿意接受任何年龄的过期响应。

此指令使用参数语法的令牌形式: 例如,'max-stale=10'而不是'max-stale="10"'。发送方不应该 (SHOULD NOT) 生成引号字符串形式。

5.2.1.3. min-fresh

参数: delta-seconds

"min-fresh"请求指令表示客户端愿意接受其新鲜度生命周期不少于其当前年龄加上指定秒数时间的响应。也就是说,客户端希望响应至少在指定秒数内保持新鲜。

此指令使用参数语法的令牌形式: 例如,'min-fresh=20'而不是'min-fresh="20"'。发送方不应该 (SHOULD NOT) 生成引号字符串形式。

5.2.1.4. no-cache

"no-cache"请求指令表示缓存不得 (MUST NOT) 在未经源服务器成功验证的情况下使用存储的响应来满足请求。

5.2.1.5. no-store

"no-store"请求指令表示缓存不得 (MUST NOT) 存储此请求或对其的任何响应的任何部分。此指令适用于私有缓存和共享缓存。在此上下文中,"不得存储"意味着缓存不得 (MUST NOT) 有意将信息存储在非易失性存储中,并且必须 (MUST) 在转发后尽快尽力从易失性存储中删除信息。

此指令不是确保隐私的可靠或充分机制。特别是,恶意或受损的缓存可能不识别或不遵守此指令,并且通信网络可能容易受到窃听。

请注意,如果包含此指令的请求从缓存中得到满足,则no-store请求指令不适用于已存储的响应。

5.2.1.6. no-transform

"no-transform"请求指令表示中间层(无论是否实现缓存)不得 (MUST NOT) 转换有效载荷,如 [RFC7230] 的第5.7.2节所定义。

5.2.1.7. only-if-cached

"only-if-cached"请求指令表示客户端仅希望获取存储的响应。如果缓存接收到此指令,它应该 (SHOULD) 使用与请求的其他约束一致的存储响应进行响应,或者使用504(网关超时)状态码进行响应。如果一组缓存作为具有良好内部连接的统一系统运行,则成员缓存可以 (MAY) 在该组缓存内转发此类请求。


🇯🇵 日本語

このセクションでは、クライアントがHTTPリクエストで使用できるキャッシュディレクティブを定義する。

5.2.1.1. max-age

引数: delta-seconds

"max-age"リクエストディレクティブは、クライアントが指定された秒数より大きい経過時間を持つレスポンスを受け入れたくないことを示す。max-staleリクエストディレクティブも存在しない限り、クライアントは古いレスポンスを受け入れない。

このディレクティブは引数構文のトークン形式を使用する: 例えば、'max-age=5'であり'max-age="5"'ではない。送信者は引用符で囲まれた文字列形式を生成すべきではない (SHOULD NOT)。

5.2.1.2. max-stale

引数: delta-seconds

"max-stale"リクエストディレクティブは、クライアントが鮮度有効期間を超えたレスポンスを受け入れる意思があることを示す。max-staleに値が割り当てられている場合、クライアントは、鮮度有効期間を指定された秒数以下だけ超えたレスポンスを受け入れる意思がある。max-staleに値が割り当てられていない場合、クライアントは任意の経過時間の古いレスポンスを受け入れる意思がある。

このディレクティブは引数構文のトークン形式を使用する: 例えば、'max-stale=10'であり'max-stale="10"'ではない。送信者は引用符で囲まれた文字列形式を生成すべきではない (SHOULD NOT)。

5.2.1.3. min-fresh

引数: delta-seconds

"min-fresh"リクエストディレクティブは、クライアントが、鮮度有効期間が現在の経過時間に指定された秒数を加えた値以上であるレスポンスを受け入れる意思があることを示す。つまり、クライアントは、少なくとも指定された秒数の間、まだ新鮮であるレスポンスを望んでいる。

このディレクティブは引数構文のトークン形式を使用する: 例えば、'min-fresh=20'であり'min-fresh="20"'ではない。送信者は引用符で囲まれた文字列形式を生成すべきではない (SHOULD NOT)。

5.2.1.4. no-cache

"no-cache"リクエストディレクティブは、キャッシュが、オリジンサーバーでの正常な検証なしに保存されたレスポンスを使用してリクエストを満たしてはならない (MUST NOT) ことを示す。

5.2.1.5. no-store

"no-store"リクエストディレクティブは、キャッシュがこのリクエストまたはそれに対するレスポンスのいずれの部分も保存してはならない (MUST NOT) ことを示す。このディレクティブはプライベートキャッシュと共有キャッシュの両方に適用される。このコンテキストでの「保存してはならない」とは、キャッシュが意図的に不揮発性ストレージに情報を保存してはならず (MUST NOT)、転送後できるだけ速やかに揮発性ストレージから情報を削除するために最善の努力をしなければならない (MUST) ことを意味する。

このディレクティブは、プライバシーを確保するための信頼できるまたは十分なメカニズムではない。特に、悪意のあるまたは侵害されたキャッシュはこのディレクティブを認識または遵守しない可能性があり、通信ネットワークは盗聴に対して脆弱である可能性がある。

このディレクティブを含むリクエストがキャッシュから満たされた場合、no-storeリクエストディレクティブはすでに保存されているレスポンスには適用されないことに注意すること。

5.2.1.6. no-transform

"no-transform"リクエストディレクティブは、中間層(キャッシュを実装しているかどうかに関係なく)が、[RFC7230] のセクション5.7.2で定義されているように、ペイロードを変換してはならない (MUST NOT) ことを示す。

5.2.1.7. only-if-cached

"only-if-cached"リクエストディレクティブは、クライアントが保存されたレスポンスのみを取得したいことを示す。このディレクティブを受信した場合、キャッシュは、リクエストの他の制約と一致する保存されたレスポンスを使用して応答するか (SHOULD)、504(Gateway Timeout)ステータスコードで応答すべきである (SHOULD)。キャッシュのグループが良好な内部接続を持つ統合システムとして運用されている場合、メンバーキャッシュはそのキャッシュグループ内でそのようなリクエストを転送してもよい (MAY)。


🇫🇷 Français

Cette section définit les directives de cache qu'un client peut utiliser dans une requête HTTP.

5.2.1.1. max-age

Argument : delta-seconds

La directive de requête "max-age" indique que le client n'est pas disposé à accepter une réponse dont l'âge est supérieur au nombre de secondes spécifié. À moins que la directive de requête max-stale ne soit également présente, le client n'est pas disposé à accepter une réponse périmée.

Cette directive utilise la forme jeton de la syntaxe d'argument : par exemple, 'max-age=5' et non 'max-age="5"'. Un émetteur NE DEVRAIT PAS (SHOULD NOT) générer la forme de chaîne entre guillemets.

5.2.1.2. max-stale

Argument : delta-seconds

La directive de requête "max-stale" indique que le client est disposé à accepter une réponse qui a dépassé sa durée de vie de fraîcheur. Si une valeur est attribuée à max-stale, alors le client est disposé à accepter une réponse qui a dépassé sa durée de vie de fraîcheur d'au plus le nombre de secondes spécifié. Si aucune valeur n'est attribuée à max-stale, alors le client est disposé à accepter une réponse périmée de n'importe quel âge.

Cette directive utilise la forme jeton de la syntaxe d'argument : par exemple, 'max-stale=10' et non 'max-stale="10"'. Un émetteur NE DEVRAIT PAS (SHOULD NOT) générer la forme de chaîne entre guillemets.

5.2.1.3. min-fresh

Argument : delta-seconds

La directive de requête "min-fresh" indique que le client est disposé à accepter une réponse dont la durée de vie de fraîcheur n'est pas inférieure à son âge actuel plus le temps spécifié en secondes. C'est-à-dire que le client souhaite une réponse qui restera fraîche pendant au moins le nombre de secondes spécifié.

Cette directive utilise la forme jeton de la syntaxe d'argument : par exemple, 'min-fresh=20' et non 'min-fresh="20"'. Un émetteur NE DEVRAIT PAS (SHOULD NOT) générer la forme de chaîne entre guillemets.

5.2.1.4. no-cache

La directive de requête "no-cache" indique qu'un cache NE DOIT PAS (MUST NOT) utiliser une réponse stockée pour satisfaire la requête sans validation réussie sur le serveur d'origine.

5.2.1.5. no-store

La directive de requête "no-store" indique qu'un cache NE DOIT PAS (MUST NOT) stocker une partie quelconque de cette requête ou de toute réponse à celle-ci. Cette directive s'applique aux caches privés et partagés. "NE DOIT PAS stocker" dans ce contexte signifie que le cache NE DOIT PAS (MUST NOT) intentionnellement stocker les informations dans un stockage non volatile, et DOIT (MUST) faire un effort maximal pour supprimer les informations du stockage volatile aussi rapidement que possible après les avoir transmises.

Cette directive N'EST PAS un mécanisme fiable ou suffisant pour garantir la confidentialité. En particulier, les caches malveillants ou compromis peuvent ne pas reconnaître ou obéir à cette directive, et les réseaux de communication peuvent être vulnérables aux écoutes clandestines.

Notez que si une requête contenant cette directive est satisfaite à partir d'un cache, la directive de requête no-store ne s'applique pas à la réponse déjà stockée.

5.2.1.6. no-transform

La directive de requête "no-transform" indique qu'un intermédiaire (qu'il implémente ou non un cache) NE DOIT PAS (MUST NOT) transformer la charge utile, comme défini dans la Section 5.7.2 de [RFC7230].

5.2.1.7. only-if-cached

La directive de requête "only-if-cached" indique que le client souhaite uniquement obtenir une réponse stockée. S'il reçoit cette directive, un cache DEVRAIT (SHOULD) soit répondre en utilisant une réponse stockée qui est cohérente avec les autres contraintes de la requête, soit répondre avec un code d'état 504 (Gateway Timeout). Si un groupe de caches est exploité comme un système unifié avec une bonne connectivité interne, un cache membre PEUT (MAY) transmettre une telle requête au sein de ce groupe de caches.


🇩🇪 Deutsch

Dieser Abschnitt definiert Cache-Direktiven, die ein Client in einer HTTP-Anfrage verwenden kann.

5.2.1.1. max-age

Argument: delta-seconds

Die "max-age"-Anfragedirektive gibt an, dass der Client nicht bereit ist, eine Antwort zu akzeptieren, deren Alter größer ist als die angegebene Anzahl von Sekunden. Sofern die max-stale-Anfragedirektive nicht ebenfalls vorhanden ist, ist der Client nicht bereit, eine veraltete Antwort zu akzeptieren.

Diese Direktive verwendet die Token-Form der Argumentsyntax: z. B. 'max-age=5' nicht 'max-age="5"'. Ein Absender SOLLTE NICHT (SHOULD NOT) die Form mit Anführungszeichen generieren.

5.2.1.2. max-stale

Argument: delta-seconds

Die "max-stale"-Anfragedirektive gibt an, dass der Client bereit ist, eine Antwort zu akzeptieren, die ihre Frischelebensdauer überschritten hat. Wenn max-stale ein Wert zugewiesen wird, dann ist der Client bereit, eine Antwort zu akzeptieren, die ihre Frischelebensdauer um höchstens die angegebene Anzahl von Sekunden überschritten hat. Wenn max-stale kein Wert zugewiesen wird, dann ist der Client bereit, eine veraltete Antwort jeden Alters zu akzeptieren.

Diese Direktive verwendet die Token-Form der Argumentsyntax: z. B. 'max-stale=10' nicht 'max-stale="10"'. Ein Absender SOLLTE NICHT (SHOULD NOT) die Form mit Anführungszeichen generieren.

5.2.1.3. min-fresh

Argument: delta-seconds

Die "min-fresh"-Anfragedirektive gibt an, dass der Client bereit ist, eine Antwort zu akzeptieren, deren Frischelebensdauer nicht weniger als ihr aktuelles Alter plus die angegebene Zeit in Sekunden beträgt. Das heißt, der Client möchte eine Antwort, die mindestens für die angegebene Anzahl von Sekunden noch frisch sein wird.

Diese Direktive verwendet die Token-Form der Argumentsyntax: z. B. 'min-fresh=20' nicht 'min-fresh="20"'. Ein Absender SOLLTE NICHT (SHOULD NOT) die Form mit Anführungszeichen generieren.

5.2.1.4. no-cache

Die "no-cache"-Anfragedirektive gibt an, dass ein Cache NICHT (MUST NOT) eine gespeicherte Antwort verwenden darf, um die Anfrage ohne erfolgreiche Validierung auf dem Ursprungsserver zu erfüllen.

5.2.1.5. no-store

Die "no-store"-Anfragedirektive gibt an, dass ein Cache KEINEN Teil (MUST NOT) dieser Anfrage oder einer Antwort darauf speichern darf. Diese Direktive gilt sowohl für private als auch für gemeinsam genutzte Caches. "DARF NICHT speichern" bedeutet in diesem Kontext, dass der Cache die Informationen NICHT absichtlich (MUST NOT) in nicht flüchtigem Speicher speichern darf und sich nach bestem Bemühen (MUST) darum bemühen muss, die Informationen so schnell wie möglich nach der Weiterleitung aus dem flüchtigen Speicher zu entfernen.

Diese Direktive ist KEIN zuverlässiger oder ausreichender Mechanismus zur Gewährleistung der Privatsphäre. Insbesondere können bösartige oder kompromittierte Caches diese Direktive möglicherweise nicht erkennen oder befolgen, und Kommunikationsnetzwerke können anfällig für Abhören sein.

Beachten Sie, dass, wenn eine Anfrage, die diese Direktive enthält, aus einem Cache erfüllt wird, die no-store-Anfragedirektive nicht auf die bereits gespeicherte Antwort anwendbar ist.

5.2.1.6. no-transform

Die "no-transform"-Anfragedirektive gibt an, dass ein Vermittler (unabhängig davon, ob er einen Cache implementiert oder nicht) die Payload NICHT transformieren DARF (MUST NOT), wie in Abschnitt 5.7.2 von [RFC7230] definiert.

5.2.1.7. only-if-cached

Die "only-if-cached"-Anfragedirektive gibt an, dass der Client nur eine gespeicherte Antwort erhalten möchte. Wenn er diese Direktive erhält, SOLLTE (SHOULD) ein Cache entweder mit einer gespeicherten Antwort antworten, die mit den anderen Einschränkungen der Anfrage konsistent ist, oder mit einem 504 (Gateway Timeout)-Statuscode antworten. Wenn eine Gruppe von Caches als einheitliches System mit guter interner Konnektivität betrieben wird, DARF (MAY) ein Mitgliedscache eine solche Anfrage innerhalb dieser Gruppe von Caches weiterleiten.


🇮🇹 Italiano

Questa sezione definisce le direttive di cache che possono essere utilizzate da un client in una richiesta HTTP.

5.2.1.1. max-age

Argomento: delta-seconds

La direttiva di richiesta "max-age" indica che il client non è disposto ad accettare una risposta la cui età è maggiore del numero di secondi specificato. A meno che non sia presente anche la direttiva di richiesta max-stale, il client non è disposto ad accettare una risposta obsoleta.

Questa direttiva utilizza la forma token della sintassi dell'argomento: ad esempio, 'max-age=5' non 'max-age="5"'. Un mittente NON DOVREBBE (SHOULD NOT) generare la forma di stringa tra virgolette.

5.2.1.2. max-stale

Argomento: delta-seconds

La direttiva di richiesta "max-stale" indica che il client è disposto ad accettare una risposta che ha superato la sua durata di freschezza. Se viene assegnato un valore a max-stale, allora il client è disposto ad accettare una risposta che ha superato la sua durata di freschezza di non più del numero di secondi specificato. Se non viene assegnato alcun valore a max-stale, allora il client è disposto ad accettare una risposta obsoleta di qualsiasi età.

Questa direttiva utilizza la forma token della sintassi dell'argomento: ad esempio, 'max-stale=10' non 'max-stale="10"'. Un mittente NON DOVREBBE (SHOULD NOT) generare la forma di stringa tra virgolette.

5.2.1.3. min-fresh

Argomento: delta-seconds

La direttiva di richiesta "min-fresh" indica che il client è disposto ad accettare una risposta la cui durata di freschezza non è inferiore alla sua età corrente più il tempo specificato in secondi. Cioè, il client desidera una risposta che sarà ancora fresca per almeno il numero di secondi specificato.

Questa direttiva utilizza la forma token della sintassi dell'argomento: ad esempio, 'min-fresh=20' non 'min-fresh="20"'. Un mittente NON DOVREBBE (SHOULD NOT) generare la forma di stringa tra virgolette.

5.2.1.4. no-cache

La direttiva di richiesta "no-cache" indica che una cache NON DEVE (MUST NOT) utilizzare una risposta memorizzata per soddisfare la richiesta senza una validazione riuscita sul server di origine.

5.2.1.5. no-store

La direttiva di richiesta "no-store" indica che una cache NON DEVE (MUST NOT) memorizzare alcuna parte di questa richiesta o di qualsiasi risposta ad essa. Questa direttiva si applica sia alle cache private che a quelle condivise. "NON DEVE memorizzare" in questo contesto significa che la cache NON DEVE (MUST NOT) intenzionalmente memorizzare le informazioni in una memoria non volatile, e DEVE (MUST) fare un tentativo del miglior sforzo per rimuovere le informazioni dalla memoria volatile il più prontamente possibile dopo averle inoltrate.

Questa direttiva NON è un meccanismo affidabile o sufficiente per garantire la privacy. In particolare, le cache malevole o compromesse potrebbero non riconoscere o obbedire a questa direttiva, e le reti di comunicazione potrebbero essere vulnerabili alle intercettazioni.

Si noti che se una richiesta contenente questa direttiva viene soddisfatta da una cache, la direttiva di richiesta no-store non si applica alla risposta già memorizzata.

5.2.1.6. no-transform

La direttiva di richiesta "no-transform" indica che un intermediario (che implementi o meno una cache) NON DEVE (MUST NOT) trasformare il payload, come definito nella Sezione 5.7.2 di [RFC7230].

5.2.1.7. only-if-cached

La direttiva di richiesta "only-if-cached" indica che il client desidera ottenere solo una risposta memorizzata. Se riceve questa direttiva, una cache DOVREBBE (SHOULD) rispondere utilizzando una risposta memorizzata che sia coerente con gli altri vincoli della richiesta, oppure rispondere con un codice di stato 504 (Gateway Timeout). Se un gruppo di cache viene gestito come un sistema unificato con buona connettività interna, una cache membro PUÒ (MAY) inoltrare tale richiesta all'interno di quel gruppo di cache.


📝 翻译说明 (Translation Notes)

  • 5.2.1核心请求指令: 所有七个指令都是HTTP缓存客户端控制的基础
  • max-age/max-stale/min-fresh: 这三个时间控制指令形成完整的新鲜度控制体系,所有语言版本都保持了数学精确性
  • no-cache vs no-store: 两者区别在所有语言中得到了清晰区分
    • no-cache: 必须验证后才能使用
    • no-store: 完全禁止存储,且明确说明了不是可靠的隐私机制
  • only-if-cached: 504响应的特殊用法在所有语言版本中得到了准确描述
  • Token语法规范: 所有指令都明确说明应使用token形式而非quoted-string形式
  • RFC 2119关键词: MUST NOT、SHOULD、MAY等在所有语言中保持法律级严谨性