【问题标题】:HTTP header "expires" does not render the page from cacheHTTP 标头“过期”不会从缓存中呈现页面
【发布时间】:2016-05-04 14:33:26
【问题描述】:

我不太熟悉允许您管理缓存客户端的所有元数据,因此我尝试使用 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 月,不是吗?

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

【问题讨论】:

    标签: html http-headers expires-header


    【解决方案1】:

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

    你基本上有三个选择:

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

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

    另外需要注意的是,由于浏览器支持等各种原因,HTML 中的 meta headers 不如服务器设置的 http response headers。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2011-01-23
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多