提交表单后如何使用清除缓存硬刷新 Internet Explorer?

How to hard refresh Internet Explorer with clear cache after form submission?

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

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

只有当我关闭 IE-window 并重新启动它时它才会显示新值。

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

这里的问题是IE会默认缓存api结果。

例如,您有一个 API return 用户个人资料,页面显示 API 获取的数据。更新用户配置文件并重新进行提取后,api 应该会 return 新数据。它在 Chrome 和其他浏览器中按预期工作,但是,IE 将 return 第一次获取的旧数据。第二次提取未到达服务器,因为 IE 浏览器 return 立即编辑了旧数据。

如何修复?

你可以添加一些 cache-control http header 来明确指示浏览器不要缓存它,这可以通过将 Cache-Control http header 设置为 no-cache值。

如果你使用koa js你基本上可以这样做:

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