提交表单后,如何用清晰的缓存硬刷新Internet Explorer?

时间:2019-05-20 08:35:44

标签: javascript internet-explorer reload

有一个网页与Web服务器交互以更改活动目录中的值。

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

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

如何在表单提交后硬重置IE页面并检索实际值?如何禁止IE向缓存写入内容或清除内容?

1 个答案:

答案 0 :(得分:1)

这里的问题是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')