更新到 Angular 17 ssr 渲染后,默认使用 http get 方法的缓存,这一点已得到 Angular 团队的确认。对我来说,缓存并没有真正起作用。我的后端是.Net Core。
这是app.component.ts
export interface Product {
productId: number;
name: string;
price: number;
color: string;
size: string;
description: string,
orderItems: any[],
productImages: any[]
}
@Component({
selector: 'app-root',
standalone: true,
imports: [CommonModule, RouterOutlet],
templateUrl: './app.component.html',
styleUrl: './app.component.css'
})
export class AppComponent {
products: Product[] = []
title = 'Gyakor';
constructor(private productService: ProductService, private httpClient: HttpClient) {
}
ngOnInit() {
this.httpClient.get<Product[]>("https://localhost:7283/api/Products/GetProducts").subscribe((result) => {
this.products = result;
})
}
}
应用程序配置
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
import { provideClientHydration } from '@angular/platform-browser';
import { provideHttpClient, withFetch } from '@angular/common/http';
export const appConfig: ApplicationConfig = {
providers: [provideRouter(routes), provideHttpClient(withFetch()), provideClientHydration()]
};
app.config.server.ts
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
import { provideServerRendering } from '@angular/platform-server';
import { appConfig } from './app.config';
const serverConfig: ApplicationConfig = {
providers: [
provideServerRendering()
]
};
export const config = mergeApplicationConfig(appConfig, serverConfig);
我尝试更改导入并更新 Angular。一个小细节是,我在尝试获取时收到错误:自签名证书,但获取仍在运行,所以我认为这不是缓存问题。但如果可以的话,请改变我的想法,我愿意接受想法。
我明白了,我发布了我的答案,希望它能帮助其他遇到此错误的人!
基本上我提到的错误:自签名证书就是问题所在。似乎如果应用程序的 NodeJs 部分发生任何错误,客户端将获取数据而不是 NodeJs。
我基本上将后端更新到托管服务器(因为那里的证书是正确的),并尝试从那里获取。而且它工作完美。
所以基本上任何 NodeJs 端错误都必须得到解决,否则获取将在客户端发生!