【问题标题】:Angular 12 auto api cacheAngular 12 自动 api 缓存
【发布时间】:2022-01-25 22:54:40
【问题描述】:

我刚刚将 Angular 版本从 10 升级到 12,我注意到页面 A 第一次加载时,然后以某种方式通过链接返回到页面 A,网络选项卡中没有显示 API。我放置了console.log('test') 并跟踪了问题,发现正在调用 HTTP 请求并返回响应,但不知何故 Angular 12 会自动缓存请求并且不再调用 API。 我想禁用此功能,但我找不到该怎么做。

转载:

ngOnInit(): void {
  this.service.getDashboardInfo().subscribe(
    result => {console.log(result)},
    error => {console.log(error)}
  );
}

this.service.getDashboardinfo() 是:

return this.http.get(this.api.DASHBOARD, { observe: 'response', headers: headers: new HttpHeaders({ 'Content-Type': 'application/json' }) });

对于此页面的第二次访问,正在调用 console.log(result),但在网络选项卡 XHR 中没有显示任何内容,并且 Api 响应立即返回,而不是正常的 500 毫秒,我认为这与 Angular 12 自动有关缓存我的请求。

这仅发生在 ng serve 中,并且在构建或 SSR 版本中一切正常。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Reproducible example
  • @VimalPatel 我试图添加一个复制,我很确定应该有一个标志或设置,因为它发生在我所有的 HTTP 请求中,与我的代码无关.
  • angular 12 中没有这样的设置。除非你在 service worker 中配置了缓存。
  • @VimalPatel 我没有使用服务工作者,我只是调用一个简单的 GET HTTP 请求,每次我访问我的任何 angular 10 页面时都会调用该请求,但在 angular 12 中,每个页面都在调用API 一次和第二次立即加载。
  • 如果不查看完整代码就很难判断。

标签: angular angular12


【解决方案1】:

刚刚浏览了整个APP,发现问题: TransferHttpCacheModule 。删除它可以解决问题。我应该为 SSR 添加 BrowserTransferStateModule,但是我错误地添加了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多