返回
洞察缓存中的 Provisional Headers are Shown
前端
2023-11-17 22:16:22
<html>
<body>
<head>
<meta charset="UTF-8" />
</head>
<body>
<h1>Provisional Headers are Shown: 真正原因剖析</h1>
<h2>导言</h2>
在日常开发中,你可能遇到过 Provisional Headers are Shown 的情况,这可能发生在跨域请求、请求被插件拦截等多种场景。然而,关于缓存时请求出现这种情况的探讨却很少。本文将聚焦这一特殊场景,深入探究其背后的原因。
<h2>现象</h2>
在浏览器发送请求时,若请求符合某些条件,则会在控制台看到如下信息:
```
Provisional headers are shown
```
通常情况下,这表示浏览器已经收到了服务器的响应,但该响应尚未被完全处理。
<h2>问题分析</h2>
要理解为什么会出现 Provisional Headers are Shown,首先需要了解 HTTP 协议中的缓存机制。当浏览器向服务器发送请求时,服务器会返回一个响应,其中包含了资源的内容以及一些 HTTP 头信息。这些头信息中,有一种称为 Vary 的头信息,它指定了服务器在响应时可能根据请求的哪些头信息的不同而返回不同的内容。
在某些情况下,浏览器会将请求发送到多个服务器,以提高性能。当浏览器收到来自多个服务器的响应时,它会根据 Vary 头信息来确定哪个响应是有效的。如果浏览器发现某个响应的 Vary 头信息与请求的头部信息不匹配,则会认为该响应不适用,并会继续等待其他服务器的响应。
Provisional Headers are Shown 的情况正是由于浏览器收到了来自不同服务器的响应,且这些响应的 Vary 头信息不一致导致的。当浏览器发现某个响应的 Vary 头信息与请求的头部信息不匹配时,它会暂时显示该响应的头部信息,但不会将该响应的内容显示在页面上。
<h2>解决方案</h2>
要解决 Provisional Headers are Shown 的问题,需要确保所有服务器的响应都具有相同的 Vary 头信息。如果服务器返回的 Vary 头信息不一致,则浏览器将无法确定哪个响应是有效的,并会一直显示 Provisional Headers are Shown 的信息。
<h2>结语</h2>
通过深入剖析缓存时出现 Provisional Headers are Shown 的原因,我们了解到这一现象是由于浏览器收到了来自不同服务器的响应,且这些响应的 Vary 头信息不一致导致的。解决问题的关键在于确保所有服务器的响应都具有相同的 Vary 头信息。
希望本文对你有帮助!如有任何问题或建议,欢迎随时提出。
</body>
</html>