微软边缘浏览器缓存中的RESTful Angular应用程序

RESTful Angular app in Microsoft Edge Browser Caching

本文关键字:RESTful Angular 应用程序 边缘 浏览器 缓存 微软      更新时间:2023-09-26

我正在开发一款使用Angular.js的Web应用程序,该应用程序通过RESTful API服务器。在开发阶段,我使用了我喜欢的浏览器Chrome,但我只是在Edge中进行了一些测试,并取得了一些有趣的发现。

我注意到对RESTful服务器的调用结果似乎返回了不正确的数据。经过仔细检查,我意识到这是由于Edge浏览器从Cache加载结果,而不是调用以获取最新和正确的结果。更重要的是,我意识到我可以从我的Angular应用程序文件中删除所有功能,Edge似乎没有抱怨!

有问题的角度函数:

$http.get(frontbaseurl+'/users/auth_user.json').then(function(response){})

我在SO上读到了一些对问题的回答,其中建议了各种方法来强制Edge不缓存结果(例如在get url中添加数据戳),但这听起来很糟糕,在我的情况下,它无论如何都不起作用。

我简直不敢相信我的发现。我内心的程序员想耸耸肩,把这归结为MS的又一场灾难,但我不能忽视这样一个事实,即一些不幸的人可能别无选择,如果他们使用我的网络应用程序,可能会出现错误。

还有其他人经历过这种情况吗?

作为一名web开发人员,我非常感谢浏览器使用大量缓存来避免对服务器的不必要请求,并帮助我的用户获得更快、更好的体验。

有很多技术可以请求浏览器停止缓存,但请不要这样做!缓存非常有用,而且有一些聪明的方法可以防止浏览器使用旧内容。

我读过一些关于SO问题的回复,其中提出了各种方法强制Edge不缓存结果(例如将数据戳添加到get-url),但这听起来很粗糙,在我的情况下,它不起作用无论如何

我相信你没有抓住要点。您不会向get-url添加数据戳。您需要将其添加到文件url中。

错误:

$http.get(frontbaseurl+'/users/auth_user.json?v=20160510').then(function(response){})

右:

<script src="/path/to/services.min.js?v=20160510"></script>

将查询字符串添加到文件名应该是构建操作的一部分。

也许可以试试这个:

$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){})