कैश व्यवहार प्रबंधित करें

आपकी साइट को यथासंभव तेज़ बनाने के लिए फायरबेस होस्टिंग एक शक्तिशाली वैश्विक सीडीएन का उपयोग करता है।

किसी भी अनुरोध किया स्थिर सामग्री स्वचालित रूप से CDN पर कैश किया गया है। यदि आप अपनी साइट की सामग्री को पुन: नियोजित करते हैं, तो फायरबेस होस्टिंग अगले अनुरोध तक सीडीएन में आपकी सभी कैश्ड स्थिर सामग्री को स्वचालित रूप से साफ़ कर देती है।

हालाँकि, क्योंकि क्लाउड फ़ंक्शंस और क्लाउड रन सेवाएँ गतिशील रूप से सामग्री उत्पन्न करती हैं, किसी दिए गए URL की सामग्री उपयोगकर्ता इनपुट या उपयोगकर्ता की पहचान जैसी चीज़ों के आधार पर भिन्न हो सकती है। इस के लिए खाते के लिए, अनुरोध करता है कि बैकएंड कोड द्वारा नियंत्रित किया जाता है डिफ़ॉल्ट रूप से CDN पर कैश नहीं है।

आप, हालांकि, कॉन्फ़िगर कैशिंग गतिशील सामग्री के लिए व्यवहार कर सकते हैं। उदाहरण के लिए, यदि कोई फ़ंक्शन केवल समय-समय पर नई सामग्री उत्पन्न करता है, तो आप कम से कम थोड़े समय के लिए जेनरेट की गई सामग्री को कैश करके अपने ऐप को गति दे सकते हैं।

आप फ़ंक्शन निष्पादन लागत को संभावित रूप से कम भी कर सकते हैं क्योंकि सामग्री को ट्रिगर फ़ंक्शन के बजाय सीडीएन से परोसा जाता है। समारोह निष्पादन और में सेवाओं के अनुकूलन के बारे में अधिक पढ़ें बादल कार्य और बादल भागो प्रलेखन।

गूगल के में व्यवहार कैशिंग बारे में और जानें वेब डेवलपर दस्तावेज़

कैश-कंट्रोल सेट करें

मुख्य उपकरण है कि आप गतिशील सामग्री के लिए कैश का प्रबंधन करने के लिए उपयोग है Cache-Control हेडर। इस हेडर को कॉन्फ़िगर करके, आप ब्राउज़र और सीडीएन दोनों से संवाद कर सकते हैं कि आपकी सामग्री को कब तक कैश किया जा सकता है। अपने कार्य में, आप सेट Cache-Control इतना की तरह:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

इस उदाहरण हेडर में, निर्देश तीन चीजें करते हैं:

  • public - मार्क्स के रूप में कैश public । इसका मतलब है कि दोनों ब्राउज़र और मध्यवर्ती सर्वर (Firebase होस्टिंग के लिए CDN अर्थ) सामग्री को कैश कर सकते हैं।

  • max-age - ब्राउज़र और CDN कितने सेकंड है कि वे सामग्री को कैश कर सकते हैं बताता है। जब निर्धारित समय समाप्त हो जाता है, तो ब्राउज़र और सीडीएन को मूल सर्वर के साथ सामग्री को फिर से सत्यापित करना होगा। उदाहरण के हैडर में, हम पांच मिनट के लिए सामग्री (देखें कैश करने के लिए ब्राउज़र और CDN अनुमति दे रहे हैं s-maxage CDN कैशिंग के लिए विशिष्ट नियंत्रण के लिए नीचे)।

  • s-maxage - ओवरराइड max-age के लिए निर्देश केवल CDN-कैशिंग; सीडीएन को बताता है कि वह कितने सेकंड में सामग्री को कैश कर सकता है। जब निर्धारित समय समाप्त हो जाता है, तो सीडीएन को मूल सर्वर के साथ सामग्री को फिर से सत्यापित करना होगा। उदाहरण के हैडर में, हम के लिए सेटिंग अधिभावी रहे हैं max-age CDN केवल के लिए और CDN दस मिनट के लिए सामग्री को कैश करने की इजाजत दी।

के लिए max-age और s-maxage , समय की सबसे लंबी राशि के लिए उनके मान निर्धारित है कि आप पुरानी जानकारी प्राप्त उपयोगकर्ताओं के साथ हैं आरामदायक। यदि कोई पृष्ठ हर कुछ सेकंड में बदलता है, तो एक छोटे समय मान का उपयोग करें। हालांकि, अन्य प्रकार की सामग्री को घंटों, दिनों या महीनों तक सुरक्षित रूप से कैश किया जा सकता है।

आप के बारे में अधिक सीख सकते हैं Cache-Control पर हैडर मोज़िला डेवलपर नेटवर्क और गूगल के में वेब डेवलपर दस्तावेज़

संचित सामग्री कब प्रस्तुत की जाती है?

ब्राउज़र और सीडीएन आपकी सामग्री को निम्न के आधार पर कैश करते हैं:

  • होस्टनाम
  • राह
  • क्वेरी स्ट्रिंग
  • में निर्दिष्ट अनुरोध हेडर की सामग्री Vary हैडर

अलग हेडर

Vary हैडर को निर्धारित करता है जो शीर्ष लेख एक उचित प्रतिक्रिया प्रदान करने के लिए (चाहे कैश की गई सामग्री वैध है या सामग्री मूल सर्वर के साथ दोबारा सत्यापित किया जाना चाहिए) इस्तेमाल किया जाना चाहिए अनुरोध करते हैं।

Firebase स्वचालित रूप से होस्टिंग सेट एक उपयुक्त Vary सामान्य स्थितियों के लिए आपकी प्रतिक्रिया पर हैडर। अधिकांश समय, आप के बारे में चिंता करने की जरूरत नहीं Vary हैडर। हालांकि, कुछ उन्नत उपयोग मामलों में, आपके पास अन्य शीर्षलेख हो सकते हैं जिन्हें आपको कैश को प्रभावित करने की आवश्यकता होती है। ऐसी बात है, तो आप सेट कर सकते हैं Vary आपकी प्रतिक्रिया पर हैडर। उदाहरण के लिए:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

इस मामले में, का मूल्य Vary शीर्षक है:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

इन सेटिंग्स के साथ, विभिन्न साथ दो अन्यथा समान अनुरोध X-My-Custom-Header हेडर अलग से कैश नहीं किया जाता। होस्टिंग कहते हैं ध्यान दें कि Cookie और Authorization को Vary डिफ़ॉल्ट रूप से शीर्ष लेख जब एक अनुरोध गतिशील सामग्री के लिए किया जाता है। यह सुनिश्चित करता है कि आपके द्वारा उपयोग किया जाने वाला कोई भी सत्र या कुकी प्राधिकरण शीर्षलेख कैश कुंजी का हिस्सा बना है, जो सामग्री के आकस्मिक रिसाव को रोकता है।

यह भी ध्यान दें:

  • केवल GET और HEAD अनुरोध कैश्ड किया जा सकता है। अन्य विधियों का उपयोग करने वाले HTTPS अनुरोधों को कभी कैश नहीं किया जाता है।

  • सावधान रहें सेटिंग जोड़ने के लिए Vary शीर्ष लेख। आप जितनी अधिक सेटिंग्स जोड़ते हैं, उतनी ही कम संभावना है कि सीडीएन कैश्ड सामग्री की सेवा कर सकता है। यह भी याद रखें कि Vary अनुरोध हेडर, नहीं प्रतिक्रिया हेडर पर आधारित है।

कुकीज़ का उपयोग करना

क्लाउड फ़ंक्शंस या क्लाउड रन के साथ फायरबेस होस्टिंग का उपयोग करते समय, कुकीज़ को आम तौर पर आने वाले अनुरोधों से हटा दिया जाता है। यह कुशल CDN के लिए अनुमति देने के लिए आवश्यक है कैश व्यवहार । केवल विशेष रूप से नामित __session कुकी अपने अनुप्रयोग के निष्पादन के लिए के माध्यम से पारित करने के लिए अनुमति दी है।

जब वर्तमान, __session कुकी स्वचालित रूप से कैश कुंजी का एक हिस्सा बना है, जिसका अर्थ है कि यह अन्य के कैश किए गए प्रतिक्रिया प्राप्त करने के लिए अलग-अलग कुकी के साथ दो उपयोगकर्ताओं के लिए असंभव है। तभी इसका उपयोग __session कुकी कि आपके ऐप उपयोगकर्ता प्राधिकरण के आधार पर विभिन्न सामग्री प्रस्तुत करती है।