我对 Firefox 显示加载资源的方式感到困惑,cached
但随后我可以看到浏览器为域名发出新的 DNS 查询并再次联系 HTTP 服务器。
下面是此行为的一个简单示例。我访问了https://example.com然后重新加载网页。正如预期的那样,加载的资源显示为cached
。但是,与此同时,我在后台运行 tcpdump 并注意到浏览器example.com
再次发出 DNS 查询,并在获得 DNS 响应后连接到 HTTP 服务器。
我对 Firefox 显示加载资源的方式感到困惑,cached
但随后我可以看到浏览器为域名发出新的 DNS 查询并再次联系 HTTP 服务器。
下面是此行为的一个简单示例。我访问了https://example.com然后重新加载网页。正如预期的那样,加载的资源显示为cached
。但是,与此同时,我在后台运行 tcpdump 并注意到浏览器example.com
再次发出 DNS 查询,并在获得 DNS 响应后连接到 HTTP 服务器。
Firefox 已缓存您的对象,并正在使用源服务器重新验证该对象。您可以告诉这一点,因为它发送了
If-Modified-Since:
和Cache-Control:
请求标头。Firefox 通常会在两种情况下重新验证缓存的对象:
Cache-Control:
和响应标头确定。Expires:
您可以看到 Web 服务器发送了
304 Not Modified
响应,因此 Firefox 提供了现有的缓存对象。HTTP 缓存会变得相当复杂。要了解所有相关信息,请花一个晚上学习RFC 7234。