0

我不太熟悉允许您管理缓存客户端的所有元数据,因此我尝试使用 HTTP 标头“过期”做一个简单的示例

使用以下代码:

<!DOCTYPE html>
<html>
    <head>
            <meta charset="utf-8" />
            <meta http-equiv="expires" content="mon, 18 Jul 2016 1:00:00 GMT" />
            <title>MY TITLE</title>
    </head>

    <body>
MY BODY
    </body>

</html>

当我第一次加载页面时(之前清除缓存)。该页面保存在缓存中,但是当我用“MY BODY2”更新我的身体并重新加载页面时,页面显示“MY BODY 2”。浏览器应该从缓存中获取页面(带有“我的身体”),因为到期时间是 2016 年 7 月,不是吗?

感谢您帮助我解决这个问题

4

1 回答 1

1

这取决于您如何重新加载页面。

你基本上有三个选择:

  1. 浏览到另一个页面,然后返回。这应该使用缓存。
  2. 按 F5 或重新加载但是。这是一个显式重新加载,因此如果有新版本,将与服务器检查 - 即使它已缓存 - 如果有较新版本,则下载它。
  3. 强制重新加载(在某些浏览器中为 Ctrl+F5)。这表示忽略缓存并从头开始下载(即使缓存版本看起来与服务器发送给您的版本相同)。

我怀疑您已经完成了选项 2,但没有意识到这会与服务器进行检查,并假设它会在仍然有效的情况下使用缓存。它实际上与服务器检查的原因是,当用户怀疑内容已更改或想要重新下载它时(例如,如果页面未正确呈现),通常会进行重新加载。

还应该注意的是,由于各种原因,包括浏览器支持原因,HTML 中的元标头不如服务器设置的 http 响应标头。

最后,值得打开开发人员工具(例如 Chrome 中的 F12)并检查网络选项卡以查看发生了什么,但在这种情况下,请确保在打开时没有勾选“禁用缓存”(默认情况下在 Chrome 中勾选为大多数开发人员在开发时不想使用缓存)。

于 2016-05-04T22:04:27.653 回答