Na tej stronie znajdziesz odpowiedzi na najczęstsze pytania dotyczące App Hosting.
App Hosting – Najczęstsze pytania
Ogólne ograniczenia i rozwiązywanie problemów z App Hosting
Z powodu problemu z infrastrukturą Cloud Run tworzenie lub aktualizowanie zasobów może być wolniejsze niż oczekiwano w niektórych regionach, takich jak
us-central1. Jeśli opóźnienie wdrożenia jest problemem w konkretnym regionie, Google zaleca wdrożenie w innym regionie.Sieć CDN dla usługi App Hosting może zawierać w kluczach pamięci podręcznej tylko określony zestaw nagłówków żądań. Lista zawiera:
Nagłówki Next.js:
RSC,Next-Router-State-Tree,Next-Router-Prefetch,Next-Router-Segment-PrefetchiNext-Url.Standardowe nagłówki Cloud CDN:
Accept,Accept-Encoding,Access-Control-Request-Headers,Access-Control-Request-Method,Origin,Sec-Fetch-Dest,Sec-Fetch-Mode,Sec-Fetch-Site,X-Goog-Allowed-ResourcesiX-Origin.
Pamiętaj, że jeśli odpowiedź zawiera nagłówek
Varyz wartością, której nie ma na tej liście, sieć CDN nie zapisze jej w pamięci podręcznej.Niezbuforowane pliki statyczne są udostępniane z Cloud Run. W późniejszej wersji będą przechowywane i udostępniane z App Hosting, co zapewni lepszą wydajność.
Podczas tworzenia backendu konsola Firebase może czasami wyświetlać błąd „Nie znaleziono kompilacji i jest ona nieprawidłowa”.
Wszystkie backendy w tym samym projekcie współdzielą organizację/konto GitHub. Można je połączyć z różnymi repozytoriami w tej organizacji lub na tym koncie. Aby utworzyć backendy połączone z różnymi kontami GitHub, umieść je w osobnych projektach.
Ograniczenia aplikacji Angular i rozwiązywanie problemów
Chociaż obsługa Angulara w App Hosting jest aktywnie rozwijana i rozszerzana, ma ona te ograniczenia:
- I18n: podstawowe funkcje I18n działają, ale bezpośrednie przejście do stron SSR może powodować błędy.
- Lokalizacja: tworzenie wersji dla różnych języków nie jest obsługiwane.
- Kreatory: obecnie obsługiwany jest tylko kreator aplikacji.
- Środowiska i narzędzia monorepozytorium: projekty Angular, które mają więcej niż 1 aplikację docelową, nie będą działać. Aby uzyskać pełniejszą obsługę monorepozytorium, użyj Nx.
Błędy HTTP 400 i zaufanie do serwera proxy w Angular SSR
Jeśli w aplikacji Angular wdrożonej na platformie Firebase App Hosting występują błędy HTTP 400 (Nieprawidłowe żądanie), blokady weryfikacji hosta lub błędy zaufania serwera proxy, zastosuj zalecane rozwiązanie dla Twojej wersji Angular:
- Angular w wersjach 19, 20 i 21: te błędy HTTP 400 możesz rozwiązać na 2 sposoby:
- Uaktualnij zależności: uruchom
npm update @angular/core @angular/ssr, aby zainstalować najnowszą poprawkę dla bieżącej wersji Angular. - Konfiguracja ręczna: zastosuj konfigurację zastępczą na poziomie kodu, ustawiając
trustProxyHeaders: truew konfiguracji serwera (patrz Konfigurowanie nagłówków zaufanego serwera proxy w dokumentacji Angular).
- Uaktualnij zależności: uruchom
- Angular w wersji 22: pierwsza kompilacja w nowym backendzie może zwracać błędy 400. Aby rozwiązać ten problem, wygeneruj drugą kompilację. Wszystkie kolejne kompilacje powinny działać zgodnie z oczekiwaniami.
Ograniczenia Next.js i rozwiązywanie problemów
- Domyślnie wbudowana optymalizacja obrazów NextJS jest wyłączona w App Hosting, chyba że wyraźnie ustawisz
images.unoptimizedna wartość false lub użyjesz niestandardowego modułu ładowania obrazów. Zobacz Optymalizacja wczytywania obrazów w Next.js. - Domyślnie Next.js zapisuje strony i dane z pamięci podręcznej w systemie plików, co wlicza się do pamięci każdej instancji wyświetlającej w App Hosting. Jeśli instancje uruchamiają się ponownie z błędami
Memory limit exceeded, zapoznaj się z artykułem Konfigurowanie buforowania serwera w Next.js. - Obecnie App Hosting ogranicza buforowanie aplikacji NextJS za pomocą oprogramowania pośredniczącego. Z czasem współczynniki trafień w pamięci podręcznej powinny się poprawić.
- Ścieżki adresów URL zawierające znaki zakodowane za pomocą procentów są dekodowane przez Cloud Run. Może to powodować problemy z funkcjami, które oczekują tylko zakodowanych ścieżek adresu URL, takimi jak routing równoległy Next.js.