एचटीएमएल 5 में कैश मेनिफेस्ट

HTML5 में कैश मेनिफेस्ट एक सॉफ्टवेयर स्टोरेज सुविधा थी जो नेटवर्क संयोजन के बिना भी वेब अनुप्रयोग तक पहुंचने की क्षमता प्रदान करती थी। यह 28 अक्टूबर 2014 को W3C अनुशंसा का अंग बन गया।

2021 से, यह तकनीक अब व्यापक रूप से उपलब्ध नहीं है। इसे फ़ायरफ़ॉक्स 85 से हटा दिया गया था, और क्रोम 84 में डिफ़ॉल्ट रूप से अक्षम कर दिया गया था और क्रोम 95 में हटा दिया गया था। इस समय किसी भी ऑफ़लाइन वेब एप्लिकेशन सुविधाओं का उपयोग करने की अत्यधिक अनुशंसा नहीं की जाती है और इसके अतिरिक्त सेवा कर्मियों के उपयोग की अनुशंसा की जाती है। कैश मैनिफ़ेस्ट वेब एप्लिकेशन मेनिफेस्ट से भिन्न होते हैं, एक JSON-आधारित फ़ाइल स्वरूप जो प्रगतिशील वेब ऐप तकनीक का हिस्सा है, और 2023 तक वर्तमान में सक्रिय है और W3C पर मानकीकरण प्रक्रिया से निकलता है।

पृष्ठभूमि
वेब एप्लिकेशन में वे वेब पेज सम्मलित होते हैं हैं जिन्हें नेटवर्क से डाउनलोड करने की आवश्यकता होती है। ऐसा होने के लिए नेटवर्क कनेक्शन होना चाहिए। चूँकि, ऐसे कई उदाहरण हैं जब उपयोगकर्ता अपने नियंत्रण से परे परिस्थितियों के कारण नेटवर्क से संयोजित नहीं हो पाते हैं। HTML5 वेब कैश मेनिफेस्ट का उपयोग करके नेटवर्क कनेक्शन के बिना भी वेब एप्लिकेशन तक पहुंचने की क्षमता प्रदान करता है। वेब अनुप्रयोगों में URLs (यूनिफ़ॉर्म रिसोर्स लोकेटर) द्वारा पहचाने गए संसाधन सम्मलित होते हैं। ये HTML, CSS (व्यापक शैली पत्रक), जावास्क्रिप्ट, छवियां या कोई अन्य स्रोत हो सकते हैं जो वेब एप्लिकेशन को प्रस्तुत करने के लिए आवश्यक होते हैं। उनके पतों को एक को एक मेनिफेस्ट फ़ाइल में कॉपी किया जा सकता है, जिसे वेब एप्लिकेशन के लेखक द्वारा नियमित रूप से अपडेट किया जा सकता है, जो जोड़े या हटाए गए किसी भी नए वेब पते को इंगित करता है। पहली बार किसी नेटवर्क से कनेक्ट होने पर, एक वेब ब्राउज़र HTML5 मेनिफेस्ट फ़ाइल को पढ़कर, दिए गए संसाधनों को डाउनलोड करेगा और उन्हें स्थानीय रूप से संग्रहीत करत है। फिर, नेटवर्क कनेक्शन की अनुपस्थिति में, वेब ब्राउज़र स्थानीय प्रतियों पर स्थानांतरित हो जाएगा और वेब एप्लिकेशन को ऑफ़लाइन प्रस्तुत करेगा।

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

विशेषता  कैश मेनिफेस्ट फ़ाइल को काम करने के लिए html तत्व में जोड़ा जाना चाहिए।

उदाहरण: मेनिफेस्ट विशेषता का तर्क मेनिफेस्ट फ़ाइल का एक सापेक्ष या निरपेक्ष पथ होता है।

नीचे दी गई HTML फ़ाइल पर विचार करें। तत्व इंगित करता है कि cache.appcache नामक फ़ाइल में इस वेब पेज के ऑफ़लाइन काम करने के लिए आवश्यक संसाधनों (जैसे, test.js, test.css) की सूची होती है। इस फ़ाइल के सामान्य नाम cache.manifest और manifest.appcache हैं।

सिंटेक्स
मेनिफेस्ट फ़ाइल लाइन से प्रारंभ होनी चाहिए. टिप्पणियाँ टिप्पणियाँ # से प्रारंभ होती हैं, रिक्त स्थान और रिक्त पंक्तियों को उपेक्षित कर दिया जाता है। नीचे कैश मेनिफेस्ट फ़ाइल का एक उदाहरण दिया गया है।

उदाहरण 1: CACHE MANIFEST /test.css /test.js /test.png

यह मेनिफेस्ट फ़ाइल तीन संसाधनों को सूचीबद्ध करती है: एक CSS फ़ाइल, एक जावास्क्रिप्ट फ़ाइल और एक PNG छवि होती है। जब उपरोक्त फ़ाइल लोड की जाती है, तो ब्राउज़र वेब सर्वर में मूल निर्देशिका से test.css, test.js और test.png फ़ाइलें डाउनलोड करता है। परिणामस्वरूप, जब भी किसी का नेटवर्क कनेक्ट नहीं होगा, तो संसाधन उन्हें ऑफ़लाइन उपलब्ध होते है।

जैसा कि नीचे दिखाया गया है, कैश मेनिफेस्ट सापेक्ष पथ या यहां तक ​​कि पूर्ण URLs का भी उपयोग कर सकते हैं।

उदाहरण 2: कैश मैनिफेस्ट /main/features.js /main/settings/index.css http://files/images/scene.jpg http://files/images/world.jpg

फ़ाइल हेडर
कैश मेनिफेस्ट फ़ाइल में तीन अनुभाग शीर्षलेख होते हैं।
 * 1) CACHE हेडर के साथ स्पष्ट अनुभाग.
 * 2) नेटवर्क हेडर के साथ ऑनलाइन श्वेतसूची अनुभाग।
 * 3) फ़ॉलबैक हेडर फ़ॉलबैक के साथ फ़ॉलबैक अनुभाग।

नोट: उपरोक्त उदाहरण 1 और उदाहरण 2, किसी भी अनुभाग शीर्षलेख को इंगित नहीं करते हैं और इसलिए उन्हें डिफ़ॉल्ट रूप से एक स्पष्ट अनुभाग माना जाता है।

हेडर नेटवर्क के साथ ऑनलाइन श्वेतसूची अनुभाग
उदाहरण 3: कैश मैनिफेस्ट नेटवर्क: /checking.cgi कैश: /test.css /test.js /test.png

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

हेडर कैश द्वारा स्पष्ट अनुभाग में बदलाव किया गया है: और संसाधनों (सीएसएस स्टाइलशीट, जावास्क्रिप्ट और छवि फ़ाइल) को ऑफ़लाइन डाउनलोड और उपयोग किया जा सकता है।

हेडर FALLBACK के साथ फ़ॉलबैक अनुभाग
कैश मैनिफ़ेस्ट फ़ाइल में फ़ॉलबैक अनुभाग का उपयोग उन ऑनलाइन संसाधनों को प्रतिस्थापित करने के लिए किया जा सकता है जिन्हें कैश नहीं किया जा सकता है या सफलतापूर्वक कैश नहीं किया गया है।

उदाहरण 4: कैश मैनिफेस्ट मैदान छोड़ना: / /ऑफ़लाइन.html नेटवर्क: … उदाहरण 4 में, फ़ॉलबैक अनुभाग में एक पंक्ति होती है। यानी, / /ऑफ़लाइन.html। 'ऑफ़लाइन' से पहले एकल वर्ण (/) किसी की साइट पर किसी भी यूआरएल पैटर्न से मेल खाएगा। यदि ब्राउज़र को ऐप कैश में पेज नहीं मिलता है, तो एप्लिकेशन /ऑफ़लाइन.html पेज प्रदर्शित करेगा।

घटना प्रवाह
घटनाएँ के अंतर्गत हैं  जावास्क्रिप्ट ऑब्जेक्ट.

यदि ब्राउज़र किसी वेब पेज पर जाता है, पहले वेब पेज नहीं देखा है और परिणामस्वरूप मेनिफेस्ट फ़ाइल को नहीं पहचानता है, तो निम्नलिखित घटनाएं घटित होंगी।


 * घटना - तब होती है जब ब्राउज़र किसी वेब पेज पर जाता है और तत्व पर मेनिफेस्ट विशेषता पढ़ता है।
 * इवेंट - यह मेनिफेस्ट फ़ाइल में दिए गए सभी संसाधनों को डाउनलोड करेगा।
 * इवेंट - इसमें यह जानकारी होती है कि कितनी फ़ाइलें डाउनलोड की गई हैं और कितनी फ़ाइलें डाउनलोड की जानी बाकी हैं।
 * घटना - तब घटित होती है जब सभी फ़ाइलें डाउनलोड हो जाती हैं और ऑफ़लाइन वेब एप्लिकेशन ऑफ़लाइन उपयोग के लिए सुसज्जित हो जाता है।

यदि ब्राउज़र पहले वेब पेज पर गया है और मेनिफेस्ट फ़ाइल को पहचानता है तो निम्नलिखित घटनाएं घटित होंगी। *  घटना - यह तब घटित होगा जब कैश मेनिफ़ेस्ट नहीं बदला गया हो।
 * घटना - यदि कैश मेनिफेस्ट ने संसाधनों को बदल दिया है तो फ़ाइलें फिर से डाउनलोड की जाएंगी।
 * इवेंट - इसमें यह जानकारी होती है कि कितनी फ़ाइलें डाउनलोड हो चुकी हैं और कितनी फ़ाइलें डाउनलोड होनी बाकी हैं।
 * इवेंट - पुनः डाउनलोडिंग पूरी होने के बाद, यह इवेंट ट्रिगर हो जाता है, जो दर्शाता है कि नया ऑफ़लाइन संस्करण उपयोग के लिए तैयार है।

यदि उपरोक्त घटनाओं में किसी भी समय कोई त्रुटि होती है, तो ब्राउज़र एक त्रुटि घटना को ट्रिगर करेगा और प्रक्रिया को रोक देगा। नीचे कुछ त्रुटियाँ दी गई हैं जो संसाधनों को दोबारा डाउनलोड करते समय हो सकती हैं।


 * पृष्ठ नहीं मिला (HTTP 404) या पृष्ठ स्थायी रूप से चला गया (HTTP त्रुटि 410)।
 * मैनिफ़ेस्ट की ओर इंगित करने वाले HTML पृष्ठ को डाउनलोड करने में विफलता। * अद्यतन होने के दौरान कैश मेनिफ़ेस्ट बदल गया। * कैश मेनिफ़ेस्ट बदल दिया गया था लेकिन ब्राउज़र ने मेनिफ़ेस्ट में कोई संसाधन डाउनलोड नहीं किया।

यह भी देखें

 * एचटीएमएल5
 * ऑफ़लाइन पाठक
 * वेब कैश

बाहरी संबंध

 * Using the application cache - HTML | MDN
 * HTML5: Offline Application Caching
 * HTML5 Rocks
 * Alistapart: Application Cache