我的问题是,在我手动按f5之前,浏览器不会显示更新页面(有时)
我将测试网站部署到Firebase(默认情况下为https)
网站为HTML5
这不是这个特定网站的问题(试过不同的网站1.简单的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">
FIREFOX:
以下情况不显示更新的页面:
在以下情况下显示更新的页面:
CHROME和Opera
以下情况不显示更新的页面:
在以下情况下显示更新的页面:
EDGE浏览器
在以下情况下完美地工作(怎么可能?)
为什么EDGE浏览器是唯一一个更新页面内容的浏览器,http-equiv只能用于IE,EDGE还是什么?
如何解决该问题?如何让Chrome,Firefox,Opera查找更改并根据需要进行更新(或者只是忽略缓存并每次加载而不加缓存)?
我是否需要为firebase.json添加一些属性,以寻找页面上的更改并向访问者发送更新的页面? 请帮助,我花了16个小时进行研究,但找不到解决方案
答案 0 :(得分:2)
您的主机可能在服务器上有1小时的缓存延迟,这会覆盖您在HEAD中放置的任何内容。您应该使用Firebase
进行检查或者,您可以在第一次使用Javascript加载页面后运行页面重新加载,这将获得与F5相同的效果。
类似的东西:
location.reload(true);
答案 1 :(得分:1)
这取决于您的代码。如果是Firebase,您必须告诉它在感知到更改时更新您的DOM。我看不到你的代码,但这是我对这个问题的猜测。
您可能正在使用ref.once('value',callback(snapshot){})
。这行代码实际上只抽取一次数据,这有时是需要的,但在这种情况下不是。如果这是您的问题,则应使用ref.on('child_added',callback(snapshot){})
和ref.on('child_changed',callback(snapshot)(){})
。
同时使用这两者将填充客户端数据,Firebase数据和会在云端更改时自动更新。
以下是.on()
的文档:
答案 2 :(得分:0)
问题现在至少解决了。
如果你遇到同样的问题,正如@ 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
,以便手动控制缓存时间,但它没有做任何事情
我所要做的只是等待一个小时,所有更改都会显示在页面上,因为浏览器需要一个小时才能放弃缓存。