HTTP标头"到期"不会从缓存中呈现页面

时间:2016-05-04 14:33:26

标签: html http-headers expires-header

我并不熟悉允许您管理缓存客户端的所有元数据,因此我尝试使用HTTP标头创建一个简单的示例" expires"

使用以下代码:

<!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>

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

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

1 个答案:

答案 0 :(得分:1)

这取决于您重新加载页面的方式。

您基本上有三种选择:

  1. 浏览到另一页然后返回。这应该使用缓存。
  2. 按F5或重新加载但是。这是一个明确的重新加载,因此将与服务器核实是否有新版本 - 即使它已被缓存 - 如果有新版本则下载它。
  3. 强制重新加载(某些浏览器中为Ctrl + F5)。这表示忽略缓存并从头开始下载(即使缓存版本与服务器将向您发送的版本相同)。
  4. 我怀疑你已经完成了选项2并且没有意识到这将检查服务器并假设它将使用缓存,如果仍然有效。它实际检查服务器的原因是,当用户怀疑内容已更改或想要重新下载时(例如,如果页面没有正确呈现),通常会重新加载。

    另外需要注意的是,HTML中的元标题不如服务器设置的http响应标头出于各种原因,包括浏览器支持原因。

    最后值得打开开发人员工具(例如Chrome中的F12)并检查网络标签以查看正在进行的操作,但在这种情况下确保您没有&#34 ;禁用缓存&#34;在它打开时打勾(默认情况下在Chrome中打勾,因为大多数开发人员在开发时都不想使用缓存)。