【发布时间】: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 一次和第二次立即加载。
-
如果不查看完整代码就很难判断。