Hata Ansiklopedisi

Fetch response body exceeds the configured limit

HttpClient sunucu tarafı render sırasında fetch arka ucunu kullandığında ve bir yanıt gövdesi için arabelleğe alınan baytlar yapılandırılan maxResponseBodySize sınırını aştığında Angular bu hatayı üretir. Angular varsayılan olarak, render sırasında sunucunun beklenmedik şekilde büyük yanıtları arabelleğe almasını önlemek için arabelleğe alınan her yanıt gövdesini 1 MB ile sınırlar.

Hatayı düzeltme

Sınırı artırmak için provideServerRendering seçeneklerinde maxResponseBodySize değerini ayarlayın:

import {provideServerRendering, withRoutes} from '@angular/ssr';
import {serverRoutes} from './app.routes.server';

const serverConfig: ApplicationConfig = {
  providers: [
    provideServerRendering(
      {
        maxResponseBodySize: 5 * 1024 * 1024, // 5MB
      },
      withRoutes(serverRoutes),
    ),
  ],
};

maxResponseBodySize, fetch arka ucunu kullanan her sunucu tarafı HttpClient isteği için Angular'ın arabelleğe alacağı maksimum yanıt gövdesi bayt sayısını yapılandırır. Değer bayt cinsinden verilir ve global olarak uygulanır.

IMPORTANT: Bu sınırı uygulamanızın izin verdiği kadar küçük tutun. Sınırı artırmak sunucu tarafı isteklerin daha büyük yanıt gövdelerini arabelleğe almasına izin verir; bu da bellek kullanımını ve hizmet reddi riskini artırabilir. Büyük indirmeleri sunucu render'ının dışına taşımayı tercih edin.

Hatayı ayıklama

Hata mesajı, yapılandırılan maxResponseBodySize sınırını bayt cinsinden içerir. Hangi HTTP isteğinin büyük bir yanıt döndürdüğünü belirlemek için ağ günlüklerinizi veya SSR sunucu konsolunu inceleyerek başarısız olan istek URL'sini bulun.

Büyük yanıta yalnızca istemcide ihtiyaç duyuluyor ve sunucu tarafı render için gerekli değilse, o isteğe özel olarak transfer önbelleğini devre dışı bırakabilirsiniz:

httpClient.get('/api/large-data', {transferCache: false});