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指令总是被私有缓存忽略。 |