-

HTTP通常用于分布式信息系统,通过使用响应缓存可以提高性能。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.

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.

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

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

缓存不能使用响应来满足后续请求,而不会使用原始服务器重新生效。

2 没有店

缓存不应该存储有关客户端请求或服务器响应的任何内容。

3 max-age = seconds

表示客户端愿意接受年龄不大于指定时间(秒)内的响应。

4 max-stale [= seconds]

表示客户端愿意接受超出其到期时间的响应。如果给出了秒数,则不能超过那段时间。

5 min-fresh =秒

表示客户端愿意接受其新鲜寿命不小于其当前年龄的响应,加上指定的时间(秒)。

6 无变换

不转换实体。

7 只有 - 如果缓存

不检索新数据。缓存只有在缓存中才能发送文档,并且不应该联系源服务器以查看是否存在较新的副本。

服务器在其HTTP响应中可以使用以下缓存响应指令:

SN 缓存请求指令和描述
1 public

表示响应可能被任何缓存缓存。

2 private

表示全部或部分响应消息是针对单个用户,不能由共享缓存缓存。

3 无缓存

缓存不得使用响应来满足后续请求,而不会使用源服务器重新验证。

4 没有店

缓存不应该存储有关客户端请求或服务器响应的任何内容。

5 无变换

不转换实体。

6 必须重新验证

缓存必须在使用之前验证过期文档的状态,并且不应使用过期文档。

7 代理重新验证

proxy-revalidate伪指令与must-revalidate伪指令的含义相同,不同之处在于它不适用于非共享用户代理缓存。

8 max-age = seconds

表示客户端愿意接受年龄不大于指定时间(秒)内的响应。

9 s-maxage = seconds

此指令指定的最大年龄将覆盖由max-age指令或Expires头指定的最大年龄。s-maxage指令总是被私有缓存忽略。