我正在使用Google AppEngine上的PouchDB构建静态应用程序。
当我在浏览器窗口中打开网站时,它显示的是我几小时前上传的版本。
如果我在隐身窗口中打开网站,则会显示更新的版本(因此我认为这实际上并不是控制台中的错误。)
我在app.yaml
我已将所有流量迁移到新版本。
我已清除缓存,删除了Cookie,检查了我的应用程序数据,一切。我甚至重新安装了Chrome和Firefox。
我昨天更新了我的Python版本和我的Google AppEngine Launcher;问题早于更新。
另外:刚发现如果我转到更新版本的URL
http://4.[app-id].appspot.com
,它会显示正确的更新版本。
这种情况发生在Chrome,Firefox和Edge中。
编辑:可能应该提到我的网站使用Service Workers和IndexedDB。我假设我的服务工作者正在缓存以前的版本,但我认为Ctrl + F5
将清除缓存并显示新版本。
答案 0 :(得分:0)
我认为必须是服务工作者缓存页面(毕竟,这应该是他们应该做的)。实际上,当你开发时,这实际上很烦人。
一个叫Rich Harris has documented this behaviour and some workarounds on a Github Gist的家伙。
重新加载页面的行为并不像您期望的那样
如果您对服务工作者进行了更改,则重新加载页面 不会杀死旧的并激活新的(它会检测到变化 通过每次请求服务工作者文件并比较旧文件 和新的逐字节字节,让你有点困惑为什么 您的更改尚未生效。这是因为旧窗口是 从来没有真正关闭,这意味着从来没有时间将它们换掉 - 你需要完全杀死标签然后重新打开它。
或者你可以通过浏览器让浏览器为你做这件事 devtools中的应用程序选项卡(在Canary中,尚未稳定的Chrome),继续 到“服务工作者”部分,并选中“重新加载更新”。
更新(2017年11月13日):此功能现已在Chrome中提供,因此您甚至无需下载Canary。
此处应用程序的哪些位缓存清除: