为什么有些浏览器在我部署更改后不会更新 https 页面?
Why some browsers won't update https page after I deploy changes?
我的问题是,在我手动按 f5 之前,浏览器不会(有时)显示更新的页面
我已将测试站点部署到 Firebase(默认为 https)
网站是HTML5
这不是这个特定站点的问题(尝试了不同的站点 1.simple html、css 站点和 2. 聚合物入门套件 gulp等)
为了解决问题,我尝试将此代码添加到 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">
- 当我更改任何内容(假设添加带有随机文本的 p-tag)并再次部署该站点时,我将看不到以下情况的变化:
FIREFOX:
在以下情况下不显示更新页面:
- 在新标签页中输入站点名称
- 或从书签选项卡中单击网站
- 我在书签栏上点击了第 2 次(第 3 次,...等)
- 或在新选项卡中手动输入第 2 次(第 3 次,...等)时间
在以下情况下是否显示更新的页面:
- 如果我直接按 f5。
CHROME 和 Opera
在以下情况下不显示更新页面:
- 在新标签页中输入站点名称
- 或从书签栏点击网站
在以下情况下是否显示更新的页面:
- 我在书签栏上点了第二次
- 或在新标签页中第二次手动输入
- 如果我直接按 f5
EDGE 浏览器
在以下情况下完美运行(这怎么可能??):
- 在新标签页中输入站点名称
- 或从书签栏点击网站
- 如果我直接按 f5。
为什么 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
,为了手动控制缓存时序,但它什么也没做
我所要做的就是等待一个小时,所有更改都会出现在页面上,因为浏览器需要一个小时才能丢弃缓存。
我的问题是,在我手动按 f5 之前,浏览器不会(有时)显示更新的页面
我已将测试站点部署到 Firebase(默认为 https)
网站是HTML5
这不是这个特定站点的问题(尝试了不同的站点 1.simple html、css 站点和 2. 聚合物入门套件 gulp等)
为了解决问题,我尝试将此代码添加到 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">
- 当我更改任何内容(假设添加带有随机文本的 p-tag)并再次部署该站点时,我将看不到以下情况的变化:
FIREFOX:
在以下情况下不显示更新页面:
- 在新标签页中输入站点名称
- 或从书签选项卡中单击网站
- 我在书签栏上点击了第 2 次(第 3 次,...等)
- 或在新选项卡中手动输入第 2 次(第 3 次,...等)时间
在以下情况下是否显示更新的页面:
- 如果我直接按 f5。
CHROME 和 Opera
在以下情况下不显示更新页面:
- 在新标签页中输入站点名称
- 或从书签栏点击网站
在以下情况下是否显示更新的页面:
- 我在书签栏上点了第二次
- 或在新标签页中第二次手动输入
- 如果我直接按 f5
EDGE 浏览器
在以下情况下完美运行(这怎么可能??):
- 在新标签页中输入站点名称
- 或从书签栏点击网站
- 如果我直接按 f5。
为什么 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
,为了手动控制缓存时序,但它什么也没做
我所要做的就是等待一个小时,所有更改都会出现在页面上,因为浏览器需要一个小时才能丢弃缓存。