表单提交后,如何用清晰的高速缓存来努力刷新Internet Explorer



有一个网页与网络服务器进行交互以更改Active Directory中的值。

在Chrome中访问时,我可以更改数据,并在表单提交后,显示新值。同时,在Internet Explorer中没有。数据修改本身会发生,因此,当我更改IE中的内容并在Chrome中刷新页面时,它会显示新值。但是在IE中,我确实按了F5和Control F5,它仍然显示旧值。我尝试在表单提交之前使用location.reload(true);,但相同。

仅当我关闭IE窗口并重新启动时,它显示了新值。

表格提交后,如何硬重置IE的页面并检索实际值?我如何禁止IE写入缓存或清除它?

这里的问题是IE默认情况下会缓存API结果。

例如,您有一个API返回用户配置文件,并且页面显示了API获取的数据。更新用户配置文件并重做获取后,API应返回新数据。它在Chrome和其他浏览器中的预期工作,但是IE将返回第一次获取的旧数据。第二次获取无法到达服务器,因为IE浏览器立即返回了旧数据。

如何修复?

您可以添加一些cache-control HTTP标头以显式指示浏览器不要缓存它,可以通过将Cache-Control HTTP标头设置为no-cache值来完成。

如果您使用koa js,则可以做到这一点:

ctx.res.setHeader('Cache-Control', 'no-cache')

最新更新