Http 简明教程
HTTP - Caching
HTTP 通常用于分布式信息系统,其中可以通过使用响应缓存提高性能。HTTP/1.1 协议包含用于执行缓存工作的若干元素。
HTTP is typically used for distributed information systems, where performance can be improved by the use of response caches. The HTTP/1.1 protocol includes a number of elements intended to make caching work.
HTTP/1.1 中缓存的目标是消除在许多情况下发送请求的需求,并消除在许多其他情况下发送完整响应的需求。
The goal of caching in HTTP/1.1 is to eliminate the need to send requests in many cases, and to eliminate the need to send full responses in many other cases.
HTTP/1.1 中基本的缓存机制是向缓存发出的隐式指令,其中服务器指定了过期时间和验证器。为此我们使用 Cache-Control 头。
The basic cache mechanisms in HTTP/1.1 are implicit directives to caches where server-specifies expiration times and validators. We use the Cache-Control header for this purpose.
Cache-Control 头允许客户端或服务器在请求或响应中传输各种指令。这些指令通常会覆盖默认缓存算法。缓存指令在一个逗号分隔列表中指定。例如:
The Cache-Control header allows a client or server to transmit a variety of directives in either requests or responses. These directives typically override the default caching algorithms. The caching directives are specified in a comma-separated list. For example:
Cache-control: no-cache
客户端可在其 HTTP 请求中使用以下缓存请求指令:
The following cache request directives can be used by the client in its HTTP request:
S.N. |
Cache Request Directive and Description |
1 |
*no-cache*A cache must not use the response to satisfy a subsequent request without successful revalidation with the origin server. |
2 |
*no-store*The cache should not store anything about the client request or server response. |
3 |
*max-age = seconds*Indicates that the client is willing to accept a response whose age is not greater than the specified time in seconds. |
4 |
*max-stale [ = seconds ]*Indicates that the client is willing to accept a response that has exceeded its expiration time. If seconds are given, it must not be expired by more than that time. |
5 |
*min-fresh = seconds*Indicates that the client is willing to accept a response whose freshness lifetime is not less than its current age plus the specified time in seconds. |
6 |
*no-transform*Does not convert the entity-body. |
7 |
*only-if-cached*Does not retrieve new data. The cache can send a document only if it is in the cache, and should not contact the origin-server to see if a newer copy exists. |
服务器可在其 HTTP 响应中使用以下缓存响应指令:
The following cache response directives can be used by the server in its HTTP response:
S.N. |
Cache Response Directive and Description |
1 |
*public*Indicates that the response may be cached by any cache. |
2 |
*private*Indicates that all or part of the response message is intended for a single user and must not be cached by a shared cache. |
3 |
*no-cache*A cache must not use the response to satisfy a subsequent request without successful re-validation with the origin server. |
4 |
*no-store*The cache should not store anything about the client request or server response. |
5 |
*no-transform*Does not convert the entity-body. |
6 |
*must-revalidate*The cache must verify the status of stale documents before using it and expired ones should not be used. |
7 |
*proxy-revalidate*The proxy-revalidate directive has the same meaning as the must- revalidate directive, except that it does not apply to non-shared user agent caches. |
8 |
*max-age = seconds*Indicates that the client is willing to accept a response whose age is not greater than the specified time in seconds. |
9 |
*s-maxage = seconds*The maximum age specified by this directive overrides the maximum age specified by either the max-age directive or the Expires header. The s-maxage directive is always ignored by a private cache. |