304 和 200 的区别(来自磁盘缓存)

Difference of 304 and 200 (from disk cache)

nginx 版本:nginx/1.14.0 (Ubuntu)

正在研究如何处理浏览器缓存。

你能解释一下为什么在 html 的情况下浏览器向服务器发送请求,而在 css 的情况下没有吗?

换句话说,为什么在 html 的情况下我们有 304,而在 css 的情况下我们有 200(来自磁盘缓存)?

服务器没有向浏览器提供任何关于将其资源缓存多长时间的信息。 (也就是说,它不包括 Cache-ControlExpires headers。)因此浏览器可以自由地提出自己的 启发式新鲜度 , 如 RFC 7234:

中所述

Since origin servers do not always provide explicit expiration times, a cache MAY assign a heuristic expiration time when an explicit time is not specified, employing algorithms that use other header field values (such as the Last-Modified time) to estimate a plausible expiration time.

大概是浏览器分配给静态 CSS 资源的刷新时间比分配给 HTML 页面的刷新时间长。有道理。

如果您关心资源的缓存方式,答案很简单——使用适当的缓存提供明确的方向 headers。