【问题标题】:AngularJS - .Get requests caching API outputAngularJS - .Get 请求缓存 API 输出
【发布时间】:2018-07-25 18:47:08
【问题描述】:

我有一个奇怪的问题。

我正在为 AngularJS 中的应用程序开发前端,我们修补了 API 上的一个错误。但是,我的 AngularJS 调用仍在获取 API 在修复之前输出的旧数据。

如果我在 chrome 中浏览到该 API 端点,我会得到正确的输出,但是,在我的应用程序的开发人员工具中查看网络选项卡时,响应是旧的。我试过重新启动 chrome、我的电脑、api ......一切。我已清除并禁用缓存。

当我重新启动 chrome 时,应用程序第一次加载时会得到正确的输出,但之后每次都会得到旧信息。

是否有某种我不知道的缓存?

【问题讨论】:

  • 不,除非您自己实现了缓存,否则没有缓存。只是为了重新验证,您应该检查前端应用程序使用的api端点url和实际的端点url。
  • 我将网络标签中的 url 复制并粘贴到新的 chrome 标签中,chrome 标签将显示正确的输出。有趣的是,当我在纯请求上检查 chrome 的网络选项卡时,即使选项卡中显示的内容是正确的,但开发人员工具的网络选项卡中显示的是旧的。似乎更多的是 chrome 问题,但我无法弄清楚....仍然隐身发生。
  • 我遵循在 URL 末尾附加随机数的做法。例如/user?rand=Math.random()
  • tahnks - 没有帮助:(我发现它也在 FF 中发生
  • @MatthewDolman,我也遇到了这个问题,尝试对您的请求和文件进行版本控制。

标签: angularjs ajax google-chrome


【解决方案1】:

尝试对您的请求、文件(Html 和 js)进行版本控制,每次发布后更改版本,不要使用time 版本,这会破坏用户缓存,最好使用date 有帮助您只是每天而不是每天更新缓存。

使用version 作为公共变量,帮助您从一处更改它。

版本文件和请求为您的客户保持更新非常重要

var version = "0.0.1"; //change version after each publish
//do not use time to version, it's will destroy the user cache
$http.get("api/getUsers?v=" + version).then(function(response){
   //your data solved
})
//for your states and all files you have
templateUrl: "partials/index.html?v=" + version

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2021-01-15
    • 2015-01-12
    相关资源
    最近更新 更多