我正在开发一个使用 Angular.js 的 Web 应用程序,该应用程序通过 RESTful API 进行服务器。在开发阶段,我使用我最喜欢的浏览器 Chrome,但我只是在 Edge 中进行了一些测试并取得了一些有趣的发现。
我注意到调用 RESTful 服务器的结果似乎返回了错误的数据。经过仔细检查,我意识到这是由于 Edge 浏览器从缓存加载结果而不是调用来获取最新且正确的结果。更重要的是,我意识到我可以从 Angular 应用程序文件中删除整个功能,而且 Edge 似乎没有提示!
有问题的 Angular 函数:
$http.get(frontbaseurl+'/users/auth_user.json').then(function(response){})
我读过一些关于 SO 问题的回复,这些回复建议采用各种方法强制 Edge 不缓存结果(例如向 get url 添加数据戳),但这听起来很老套,在我的情况下却没有无论如何都要工作。
我不太相信我的发现。我内心的编码员想耸耸肩,把这归咎于微软的另一场灾难,但我不能忽视这样一个事实,一些不幸的人可能别无选择,如果他们使用我的网络应用程序,可能会遇到错误。
还有人经历过这种情况吗?
最佳答案
作为一名 Web 开发人员,我非常欣赏浏览器设置大量缓存以避免对我的服务器发出不必要的请求,并帮助我的用户获得更快、更好的体验。
有many techniques请求浏览器停止缓存,但请不要这样做!缓存非常有用,并且有一些聪明的方法可以防止浏览器使用旧内容。
I've read a few responses to questions on SO that suggest various ways to force Edge to not cache results (for example adding a data stamp to the get url), but it sounds hacky and in my case it didn't work anyway.
我相信你没有捕获重点。您没有将数据戳添加到获取网址。您需要将其添加到文件网址。
错误:
$http.get(frontbaseurl+'/users/auth_user.json?v=20160510').then(function(response){})
右:
<script src="/path/to/services.min.js?v=20160510"></script>
将查询字符串添加到文件名应该是构建操作的一部分。
关于javascript - Microsoft Edge 浏览器缓存中的 RESTful Angular 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37220782/