- Verschifft
- 26. August 2026 um 02:30 UTC
- Autor
- kamo
- Ausschuss
- c36c532
getRequestConfig läuft pro Anfrage, und für jedes nicht-englische Mitglied, das es heißt mergeWithFallback über den gesamten 23.252-Schlüsselkatalog jedes Mal - ein Ergebnis umgebaut das kann sich bis zum nächsten Einsatz nicht ändern. Gemessen an einer Desktop-CPU: 8-25 ms je an der Lokale, durchschnittlich 16 ms, von einfahlender Arbeit, die vor der Reaktion. Ein Pod ist langsamer als ein Desktop, und dies landet auf TTFB für jede Seitenbeladung von jedes Mitglied, das nicht Englisch liest. Cached pro Ort für das Leben des Prozesses. Der englische Weg ist unberührt - er bereits den Basiskatalog ohne Zusammenlegung zurückgegeben. Zwei Dinge machen dies billiger, als es aussieht. Es ist durch Konstruktion begrenzt: isLocale() Gates der Schlüssel, bevor es die Karte erreicht, so gibt es höchstens einen Eintrag pro unterstützt locale, 21 von ihnen. Und ein zwischengespeicherter Katalog ist weitgehend kostenlos - MergeWithFallback Kopien string REFERENCES statt Strings, so was beibehalten wird, ist ein Objekt Wirbel über Strings, die der Import-Cache bereits hält. Sechs zusammengeführte Exemplare waren nicht von Null in einer Haufenmessung über separate Prozesse hinweg. Auch der englische Fallback für eine fehlende Locale-Datei wird absichtlich zwischengespeichert. Locale Dateien Schiff innerhalb des Bildes, so dass eine, die bei der ersten Anfrage fehlt fehlt für das ganze Leben des Prozesses; das erneute Lesen des Scheiterns pro Anfrage kaufte nichts. Sicher zu teilen, weil nichts mutiert es: der einzige Verbraucher von getMessages() ist app/layout.tsx, das es ausliest und dem NextIntlClientProvider reicht. Verifiziert: tsc --noEmit sauber über i18n/ und app/layout.tsx mit ihren transitiven Importen.