अक्सर पूछे जाने वाले सवाल और समस्या का हल

इस पेज पर, App Hosting के बारे में अक्सर पूछे जाने वाले सवालों (एफ़एक्यू) के जवाब दिए गए हैं.

App Hosting अक्सर पूछे जाने वाले सवाल

सामान्य App Hosting सीमाएं और समस्या हल करना

  • Cloud Run के इन्फ़्रास्ट्रक्चर में समस्या की वजह से, कुछ इलाकों में संसाधनों को बनाने या अपडेट करने में उम्मीद से ज़्यादा समय लग सकता है. जैसे, us-central1. अगर किसी इलाके में डिप्लॉयमेंट में देरी हो रही है, तो Google का सुझाव है कि आप किसी दूसरे इलाके में डिप्लॉय करें.
  • App Hosting का सीडीएन, अपनी कैश मेमोरी की कुंजियों में सिर्फ़ अनुरोध हेडर का एक खास सेट शामिल कर सकता है. इस सूची में NextJS के RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch, और Next-Url हेडर शामिल हैं. साथ ही, इसमें 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-Resources, और X-Origin भी शामिल हैं. अगर किसी जवाब में ऐसा Vary हेडर शामिल है जिसकी वैल्यू यहां नहीं दी गई है, तो हमारा सीडीएन उसे कैश मेमोरी में सेव नहीं करेगा.
  • कैश मेमोरी में सेव नहीं की गई स्टैटिक फ़ाइलें, Cloud Run से डिलीवर की जाती हैं. बाद के रिलीज़ में, इन्हें बेहतर परफ़ॉर्मेंस के लिए App Hosting ऑरिजिन से सेव और डिलीवर किया जाएगा.
  • Firebase कंसोल, बैकएंड क्रिएशन पर कभी-कभी "बिल्ड नहीं मिला और यह अमान्य है" गड़बड़ी दिखा सकता है.
  • एक ही प्रोजेक्ट में मौजूद सभी बैकएंड, GitHub संगठन/खाते को शेयर करते हैं. इन्हें उस संगठन/खाते के अलग-अलग रिपॉज़िटरी से कनेक्ट किया जा सकता है. अलग-अलग GitHub खातों से कनेक्ट किए गए बैकएंड बनाने के लिए, उन्हें अलग-अलग प्रोजेक्ट में रखें.

Angular ऐप्लिकेशन से जुड़ी सीमाएं और समस्या हल करना

हालांकि, Angular के लिए App Hosting की सुविधा पर अब भी काम चल रहा है और इसे बेहतर बनाया जा रहा है. फ़िलहाल, इसकी कुछ सीमाएं हैं:

  • I18n: I18n की मुख्य सुविधा काम करती है. हालांकि, SSR पेजों पर सीधे नेविगेट करने से गड़बड़ियां हो सकती हैं.
  • स्थानीय भाषा में उपलब्ध कराना: अलग-अलग भाषाओं के लिए वर्शन बनाने की सुविधा उपलब्ध नहीं है.
  • बिल्डर: फ़िलहाल, सिर्फ़ ऐप्लिकेशन बिल्डर का इस्तेमाल किया जा सकता है.
  • एनवायरमेंट और Monorepo टूलिंग: एक से ज़्यादा ऐप्लिकेशन टारगेट वाले Angular प्रोजेक्ट फ़ेल हो जाएंगे. मोनोरिपो के लिए ज़्यादा बेहतर सहायता पाने के लिए, Nx का इस्तेमाल करें.

Angular SSR में एचटीटीपी 400 गड़बड़ियां और प्रॉक्सी पर भरोसा करना

अगर Firebase App Hosting पर डिप्लॉय किए गए आपके Angular ऐप्लिकेशन में, HTTP 400 (गलत अनुरोध) गड़बड़ियां, होस्ट की पुष्टि करने वाले ब्लॉकर या प्रॉक्सी ट्रस्ट से जुड़ी गड़बड़ियां आती हैं, तो अपने Angular वर्शन के लिए सुझाया गया तरीका अपनाएं:

  • Angular v19, v20, और v21: एचटीटीपी 400 गड़बड़ियों को ठीक करने के लिए, आपके पास ये दो तरीके हैं:
    • डिपेंडेंसी अपग्रेड करें: अपने मौजूदा Angular वर्शन के लिए, सबसे नया पैच रिलीज़ इंस्टॉल करने के लिए npm update @angular/core @angular/ssr चलाएं.
    • मैन्युअल कॉन्फ़िगरेशन: कोड-लेवल पर कॉन्फ़िगरेशन फ़ॉलबैक लागू करने के लिए, अपने सर्वर कॉन्फ़िगरेशन में trustProxyHeaders: true सेट करें. इसके लिए, Angular के दस्तावेज़ में भरोसेमंद प्रॉक्सी हेडर कॉन्फ़िगर करना लेख पढ़ें.
  • Angular v22: नए बैकएंड पर पहली बार बिल्ड करने पर, 400 गड़बड़ियां दिख सकती हैं. इस समस्या को हल करने के लिए, दूसरा बिल्ड जनरेट करें. इसके बाद की सभी बिल्ड, उम्मीद के मुताबिक काम करनी चाहिए.

Next.js की सीमाएं और समस्या हल करना

  • डिफ़ॉल्ट रूप से, App Hosting पर NextJS में इमेज ऑप्टिमाइज़ करने की सुविधा बंद होती है. इसे तब तक बंद रखा जाता है, जब तक images.unoptimized को फ़ॉल्स पर सेट न किया जाए या कस्टम इमेज लोडर का इस्तेमाल न किया जाए. Next.js पर इमेज लोड होने की प्रोसेस को ऑप्टिमाइज़ करना लेख पढ़ें.
  • प्रतिशत में एन्कोड किए गए वर्णों वाले यूआरएल पाथ को Cloud Run डिकोड करता है. इससे उन सुविधाओं में समस्याएं आ सकती हैं जिनके लिए सिर्फ़ एन्कोड किए गए यूआरएल पाथ की ज़रूरत होती है. जैसे, Next.js की पैरलल राउटिंग.
  • फ़िलहाल, App Hosting, मिडलवेयर का इस्तेमाल करने वाले NextJS ऐप्लिकेशन के लिए कैश मेमोरी को सीमित करता है. समय के साथ, कैश हिट रेट बेहतर होने चाहिए.
  • Cloud Run, प्रतिशत के तौर पर एन्कोड किए गए वर्णों वाले यूआरएल पाथ को डिकोड करता है. इससे उन सुविधाओं में समस्याएं आ सकती हैं जिनके लिए सिर्फ़ एन्कोड किए गए यूआरएल पाथ की ज़रूरत होती है. जैसे, Next.js पैरलल राउटिंग