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

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

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

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

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

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

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

नीचे दी गई एचटीएमएल फ़ाइल पर विचार करें। <एचटीएमएल> तत्व इंगित करता है कि 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: CACHE MANIFEST /main/features.js /main/settings/index.css &lt;nowiki&gt;http://files/images/scene.jpg &lt;nowiki&gt;http://files/images/world.jpg

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

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

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

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

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

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

उदाहरण 4: CACHE MANIFEST FALLBACK: / /offline.एचटीएमएल NETWORK: … उदाहरण 4 में, फ़ॉलबैक अनुभाग में एक पंक्ति होती है। अर्थात, i.e., / /offline.एचटीएमएल. 'ऑफ़लाइन' से पहले एकल वर्ण (/) किसी की साइट पर किसी भी URL पैटर्न से मिलान करता है। यदि ब्राउज़र को ऐप कैश में पेज नहीं मिलता है, तो एप्लिकेशन /offline.एचटीएमएल. पेज प्रदर्शित करता है।

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

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


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

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

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


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

यह भी देखें

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

बाहरी संबंध

 * Using the application cache - एचटीएमएल | MDN
 * एचटीएमएल5: Offline Application Caching
 * एचटीएमएल5 Rocks
 * Alistapart: Application Cache