Http 请求缓存在 Angular 17 中不起作用

问题描述 投票:0回答:1

更新到 Angular 17 ssr 渲染后,默认使用 http get 方法的缓存,这一点已得到 Angular 团队的确认。对我来说,缓存并没有真正起作用。我的后端是.Net Core。

As you can see the GetProducts request is loaded after the html is loaded..

这是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。一个小细节是,我在尝试获取时收到错误:自签名证书,但获取仍在运行,所以我认为这不是缓存问题。但如果可以的话,请改变我的想法,我愿意接受想法。

angular caching server-side-rendering http-get angular-ssr
1个回答
0
投票

我明白了,我发布了我的答案,希望它能帮助其他遇到此错误的人!

基本上我提到的错误:自签名证书就是问题所在。似乎如果应用程序的 NodeJs 部分发生任何错误,客户端将获取数据而不是 NodeJs。

我基本上将后端更新到托管服务器(因为那里的证书是正确的),并尝试从那里获取。而且它工作完美。

所以基本上任何 NodeJs 端错误都必须得到解决,否则获取将在客户端发生!

© www.soinside.com 2019 - 2024. All rights reserved.