推荐答案
Cache-Control
Cache-Control
是 HTTP/1.1 中用于控制缓存行为的头部字段。它可以通过设置不同的指令来控制缓存的行为,例如 max-age
、no-cache
、no-store
等。
max-age=<seconds>
:指定资源的最大缓存时间,单位为秒。no-cache
:强制客户端在使用缓存前向服务器验证资源的有效性。no-store
:禁止缓存任何响应内容。public
:允许任何缓存(包括代理服务器)缓存响应。private
:只允许客户端缓存响应,不允许代理服务器缓存。
Expires
Expires
是 HTTP/1.0 中用于指定资源过期时间的头部字段。它指定了一个具体的日期和时间,表示在此时间之前,资源可以被缓存。
- 例如:
Expires: Wed, 21 Oct 2025 07:28:00 GMT
Last-Modified
Last-Modified
是 HTTP/1.0 中用于标识资源最后修改时间的头部字段。它通常与 If-Modified-Since
请求头一起使用,用于条件请求。
- 例如:
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
ETag
ETag
是 HTTP/1.1 中用于标识资源版本的头部字段。它是一个唯一的字符串,通常由服务器生成,用于标识资源的特定版本。客户端可以通过 If-None-Match
请求头来验证资源的有效性。
- 例如:
ETag: "686897696a7c876b7e"
本题详细解读
Cache-Control
Cache-Control
是 HTTP/1.1 中引入的头部字段,用于更精细地控制缓存行为。相比于 Expires
,Cache-Control
提供了更多的指令,可以更灵活地控制缓存策略。例如,max-age
可以指定资源在缓存中的存活时间,而 no-cache
则要求客户端在使用缓存前必须向服务器验证资源的有效性。
Expires
Expires
是 HTTP/1.0 中用于指定资源过期时间的头部字段。它通过指定一个具体的日期和时间来告诉客户端在此时间之前可以缓存资源。然而,由于 Expires
依赖于客户端和服务器的时钟同步,因此在某些情况下可能会导致缓存失效。
Last-Modified
Last-Modified
是 HTTP/1.0 中用于标识资源最后修改时间的头部字段。当客户端再次请求该资源时,可以通过 If-Modified-Since
请求头将 Last-Modified
的值发送给服务器。如果资源在 Last-Modified
之后没有被修改,服务器可以返回 304 Not Modified
状态码,告诉客户端可以使用缓存的资源。
ETag
ETag
是 HTTP/1.1 中用于标识资源版本的头部字段。它是一个唯一的字符串,通常由服务器生成,用于标识资源的特定版本。当客户端再次请求该资源时,可以通过 If-None-Match
请求头将 ETag
的值发送给服务器。如果资源的 ETag
与服务器上的 ETag
匹配,服务器可以返回 304 Not Modified
状态码,告诉客户端可以使用缓存的资源。ETag
通常比 Last-Modified
更精确,因为它可以处理资源内容变化但修改时间不变的情况。