为什么有些浏览器在我部署更改后不会更新 https 页面?

Why some browsers won't update https page after I deploy changes?

我的问题是,在我手动按 f5 之前,浏览器不会(有时)显示更新的页面

为了解决问题,我尝试将此代码添加到 HEAD(没有解决问题)

<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="Cache-Control" content="max-age=0">

FIREFOX:

在以下情况下不显示更新页面:

在以下情况下是否显示更新的页面:

CHROME 和 Opera

在以下情况下不显示更新页面:

在以下情况下是否显示更新的页面:

EDGE 浏览器

在以下情况下完美运行(这怎么可能??):

为什么 EDGE 浏览器是唯一一个更新页面内容的浏览器,http-equiv 只适用于 IE、EDGE 或什么?

我该如何解决这个问题?我如何让 Chrome、Firefox、Opera 查找更改并在需要时更新它(或者只是忽略缓存并每次都在没有任何缓存的情况下加载它)?

我是否需要将一些属性添加到 firebase.json 以查找页面上的更改并将更新后的页面发送给访问者? 请帮忙,我花了大约 16 个小时进行研究,但找不到解决方案

您的主机在服务器上可能有 1 小时的缓存延迟,这会覆盖您放入 HEAD 中的任何内容。你应该用 Firebase

检查一下

或者,您可以 运行 在使用 Javascript 首次加载页面后重新加载页面,这将获得与 F5 相同的效果。

类似于:

location.reload(true);

这取决于您的代码。如果是 Firebase,您必须告诉它在感觉发生变化时更新您的 DOM。我看不到您的代码,但这是我对问题的猜测。 您可能正在使用 ref.once('value',callback(snapshot){})。这行代码实际上只提取一次数据,这有时是需要的,但在这种情况下不是。如果那是你的问题,你应该改用 ref.on('child_added',callback(snapshot){})ref.on('child_changed',callback(snapshot)(){})

同时使用这两者将使用 Firebase 数据填充客户端数据并且在云端发生变化时自动更新它。

这是 .on() 的文档:

至少暂时解决了问题。

如果您遇到与@Henry24 所建议的相同的问题,只需等待一个小时,它就会解决。 我尝试添加此代码

{
   ...

  "rewrites": [ {
    "source": "!{/bower_components,/elements}/**",
    "destination": "/index.html"
  } ],

  "headers": [ {
    "source" : "/*.html",
    "headers" : [ {
      "key" : "Cache-Control",
      "value" : "max-age=0"
    } ]
} ]
}

到firebase.json,然后Gulp然后Firebase deploy,为了手动控制缓存时序,但它什么也没做

我所要做的就是等待一个小时,所有更改都会出现在页面上,因为浏览器需要一个小时才能丢弃缓存。