html cache-control=no-cache 更改为 cache-control=max-age=0

html cache-control=no-cache changes to cache-control=max-age=0

我构建了一个简单的页面来测试缓存控制,但我对结果感到困惑。 该页面只是

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Website teste</title>
    <meta http-equiv="cache-control" content="no-cache">
</head>
<body>
    <div>Hello World</div>

    <script>
        setTimeout(function () {
            window.location.reload()
        }, 10000)
    </script>
</body>
</html>

如果我进行硬刷新,缓存控制就是预期的

但下一次刷新缓存控制更改为 max-age=0

并且结果不应该是 304(未修改)而不是 200(正常)

此示例站点 运行 在 VisualStudio (IIS) 上

meta 元素的 http-equiv 属性在 HTML standard 中定义。注意:

The http-equiv attribute is an enumerated attribute. The following table lists the keywords defined for this attribute...

cache-control 不是列出的值之一,因此该指令无效。

不过,您的假设并非不合理;在标准 it was suggested 的早期版本中,服务器可以基于此元素创建 header:

HTTP servers may read the content of the document <HEAD> to generate header fields corresponding to any elements defining a value for the attribute HTTP-EQUIV. NOTE - The method by which the server extracts document meta-information is unspecified and not mandatory.

不过,我不知道是否有服务器真的这样做了。

最后,请注意,您在开发者工具中看到的 Cache-Control header 是 request header,而不是响应 header,因此与此无关。这是浏览器经常在刷新请求中添加的内容,以确保它们不会获得缓存内容。