我正在开发一个使用Angular.js的Webapp,它由RESTful API提供服务。在开发阶段,我使用我首选的浏览器Chrome,但我刚刚在Edge中运行了一些测试并做了一些有趣的发现。
我注意到调用RESTful服务器的结果似乎返回了错误的数据。经过仔细检查,我意识到这是由于Edge浏览器从Cache加载结果而不是调用以获得最新和正确的结果。还有什么我意识到我可以从我的Angular应用程序文件中删除整个函数而Edge似乎没有抱怨!
有问题的角度函数:
$http.get(frontbaseurl+'/users/auth_user.json').then(function(response){})
我已经阅读了一些关于SO的问题的回复,这些问题提出了强制Edge不缓存结果的各种方法(例如在get url中添加数据标记),但这听起来很糟糕,在我的情况下它并没有&无论如何都要工作。
我无法相信我的发现。我的编码员想要耸耸肩,把它归结为MS的又一次灾难,但是我不能忽视这样一个事实:一些不幸的人可能别无选择,如果他们使用我的网络应用程序就会遇到错误。< / p>
其他人有过这种经历吗?
答案 0 :(得分:1)
作为一名网络开发人员,我非常感谢浏览器放置大量缓存以避免对我的服务器发出不必要的请求,并帮助我的用户获得更快,更好的体验。
有many techniques请求浏览器停止缓存,但请不要这样做!缓存非常有用,并且有一些智能方法可以阻止浏览器使用旧内容。
我已经阅读了一些关于SO的问题的回答,提出了各种方法 强制Edge不缓存结果(例如添加数据戳记 获取网址),但它听起来很黑,在我的情况下,它不起作用 反正。
我相信你错过了这一点。您不会将数据标记添加到获取网址。您需要将其添加到文件网址。
<强>错误:强>
$http.get(frontbaseurl+'/users/auth_user.json?v=20160510').then(function(response){})
从右:强>
<script src="/path/to/services.min.js?v=20160510"></script>
将查询字符串添加到文件名应该是构建操作的一部分。
答案 1 :(得分:0)
也许试试这个:
$http.get(frontbaseurl+'/users/auth_user.json?' +some random number).then(function(response){})
随机数必须在每次通话中改变
或
$http.get(frontbaseurl+'/users/auth_user.json?' ,{cache:false}).then(function(response){})