微软边缘浏览器缓存中的RESTful Angular应用程序
RESTful Angular app in Microsoft Edge Browser Caching
我正在开发一款使用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){})
- Angular JS IE9 Hashbang url rewriting
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 使用angular重定向到html页面
- angular.js没有'无法在PhoneGap中处理视图标记
- Javascript(Angular)从一个对象数组到第二个数组查找值
- angular 1.5应用程序中的导航栏
- angular的下拉菜单
- Angular只从数组中获取所需的数据
- 如何将不可变的js导入angular 2(alpha)
- Angular js-返回一个包含类似
- 如何使用 Angular JS 将数据保存在数据库中
- 微软边缘浏览器缓存中的RESTful Angular应用程序
- 声明与RESTful一起使用的模型定义”;新的“;在Angular中
- 无法从angular js中的restful Web服务中提取数据
- Angular / ExpressJS / RestFul Security
- 针对restful API的Angular登录/认证
- RESTful Get Request with Angular & NodeJS Express
- 如何在angular js中以post请求的形式从RESTful服务中检索数据