有一个网页与网络服务器进行交互以更改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')