首页 > 解决方案 > html cache-control=no-cache 更改为 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) 上运行

标签: htmlhttp-headerscache-control

解决方案


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

http-equiv属性是枚举属性。下表列出了为此属性定义的关键字...

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

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

HTTP 服务器可以读取文档的内容<HEAD>以生成与定义属性值的任何元素相对应的标题字段HTTP-EQUIV。注 - 服务器提取文档元信息的方法未指定且不是强制性的。

不过,我不知道是否有任何服务器确实这样做了。

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


推荐阅读