2017-10-20 157 views
0

我正在Google AppEngine上使用PouchDB构建一个静态应用程序。服务人员:文件在服务器上更新,但在浏览器中显示旧版本

当我在浏览器窗口中打开网站时,它显示了几个小时前我上传的版本。

如果我在隐身窗口中打开网站,会显示更新后的版本(因此我不认为它实际上是控制台中的错误)。

我把一个新的版本号在app.yaml

我已经迁移所有的流量到新版本。

我已清除我的缓存,删除了Cookie,检查了我的应用程序数据,所有内容。我甚至重新安装了Chrome和Firefox。

昨天我更新了我的Python版本和我的Google AppEngine Launcher;该问题在更新之前发生。

另外:刚刚发现,如果我转到更新的版本的网址 http://4.[app-id].appspot.com,它会显示正确的更新版本。

这发生在Chrome,Firefox和Edge中。

编辑:可能应该提到我的网站使用服务人员和IndexedDB。我假设我的服务人员正在缓存以前的版本,但我会认为Ctrl + F5会清除缓存并显示新版本。

+0

@丹cornilescu感谢暗示高速缓存的问题 - 这是一个缓存的问题,但应用程序缓存,而不是浏览器的缓存。 –

回答

0

我认为它必须是服务人员缓存页面(毕竟,他们应该做的)。当你正在开发时,这实际上很烦人。

一个叫Rich Harris has documented this behaviour and some workarounds on a Github Gist的人。

重新加载页面不表现为你所期望的

如果你改变你的服务工作人员,再重装 的页面不会杀死旧的和激活新一个(它通过每次请求服务工作者文件并比较旧的 和新的逐字节检测到更改 ),让你有点困惑,为什么 你的更改没有生效。这是因为旧窗口是从未实际关闭的 ,这意味着永远没有时间将它们交换出去 - 您需要完全关闭该选项卡,然后重新打开它。

或者你可以让浏览器为你做在devtools要去 应用程序选项卡(金丝雀,没有稳定的Chrome还),去 到服务工人节,并检查“重新加载更新”。

UPDATE(2017年11月13日):此功能现在在Chrome中,所以你甚至不需要下载金丝雀。

下面是该应用程序缓存的位来清除:

clearing the application cache

相关问题