Cache-Control: max-age=0
的含义是 缓存过期后,客户端必须重新请求资源 。具体行为如下:
-
立即失效 :当客户端收到一个
Cache-Control: max-age=0
的响应时,无论该资源是否实际上已经过期,客户端都会认为该资源已经过期,并需要向服务端发送新的请求以获取最新资源。 -
重新验证 :如果客户端之前缓存了该资源,并且设置了
Cache-Control: max-age=0
,则客户端会在发送请求时携带If-Not-Modified
头,沿途的每个缓存都会重新验证其缓存条目,直到到达源服务器。 -
状态码 :如果资源没有修改,服务器会返回
304 Not Modified
状态码;如果资源有修改,服务器会返回200 OK
状态码。 -
与 no-cache 的区别 :虽然
Cache-Control: max-age=0
和Cache-Control: no-cache
都要求客户端在每次请求时都向服务端验证资源,但max-age=0
会在缓存过期后立即重新验证,而no-cache
会在每次请求时都向服务端请求最新的资源,即使缓存未过期也会进行验证。
建议
在实际应用中,如果希望资源在客户端缓存中保持最新,但又不想每次都向服务端发送请求,可以考虑使用 Cache-Control: max-age
指令,并设置一个合适的 max-age
值。如果需要确保资源始终是最新的,可以使用 Cache-Control: no-cache
。