मानों को एक छोटे, वर्ज़न वाले डेटा ऑब्जेक्ट में रखें
240 जैसे नंगे स्कोर को सहेजने के बजाय, JSON ऑब्जेक्ट को स्टोर करें जैसे कि { version: 2, bestScore: 240, settings: { sound: true } }। लोड होने पर, टेक्स्ट को पार्स करें, जांचें कि यह एक ऑब्जेक्ट है, और फ़ील्ड का उपयोग करने से पहले इसके संस्करण का निरीक्षण करें। JSON.parse अमान्य JSON के लिए एक SyntaxError दे सकता है, इसलिए प्लेयर शुरू होने से पहले स्टार्टअप को रोकने की अनुमति देने के बजाय एक परिभाषित फ़ॉलबैक के साथ विकृत पाठ को संभालें।
डेटा ऑब्जेक्ट को छोटा रखें और हर वर्ज़न का अर्थ दर्ज करें। केवल वर्ज़न नंबर को पर्याप्त सत्यापन न मानें: वर्ज़न 2 के रूप में चिह्नित मान भी अधूरा या गलत प्रकार का हो सकता है। मौजूदा बिल्ड जिन फ़ील्ड पर निर्भर है, उन्हें जाँचें; उदाहरण के लिए bestScore परिमित और गैर-ऋणात्मक संख्या होनी चाहिए, और ध्वनि प्राथमिकता बूलियन होनी चाहिए।
हर समर्थित पुराने प्रारूप के लिए माइग्रेशन लिखें
वर्ज़न 1 का माइग्रेशन पुराने नंबर को नए डेटा ऑब्जेक्ट में बदल सकता है, डिफ़ॉल्ट सेटिंग भर सकता है और फिर वर्ज़न 2 के प्रारूप में सहेज सकता है। कई पुराने वर्ज़न समर्थित हों तो क्रम से माइग्रेट करें: पहले वर्ज़न 1 से 2, फिर 2 से 3। हर परीक्षण मामले को अलग से जाँचें—जैसे गुम कुंजी, अमान्य JSON, अज्ञात भविष्य का वर्ज़न और आंशिक रूप से लिखा मान। तय करें कि अज्ञात डेटा को रखा जाए, अनदेखा किया जाए या रीसेट किया जाए; ज़रूरत पड़ने पर रिकवरी संदेश दिखाएँ।
ब्राउज़र स्टोरेज की सीमाएँ समझें
MDN के अनुसार localStorage origin से जुड़ा डेटा है जो ब्राउज़र सत्रों के बीच बना रह सकता है। फिर भी इसकी उपलब्धता या सामग्री को गारंटीकृत खाता बैकअप नहीं मानना चाहिए। इसमें रहस्य या भरोसेमंद होने की आवश्यकता वाले निर्णय न रखें। यदि गेम सेव नहीं पढ़ पाता, तो तय शुरुआती स्थिति से शुरू करने दें और हर लॉन्च पर उसी विफल माइग्रेशन को फिर से आज़माने से बचें।
लोकलस्टोरेज गेम डेटा वर्जनिंग से जुड़े सवाल
क्या फॉर्मेट बदलने पर मुझे सभी सेव साफ़ कर देने चाहिए?
केवल तभी जब वह एक स्पष्ट उत्पाद निर्णय हो। यदि महत्वपूर्ण मूल्यों को सुरक्षित रूप से मैप किया जा सकता है, तो एक छोटा परीक्षण किया गया माइग्रेशन उन्हें संरक्षित कर सकता है; अन्यथा स्पष्ट फ़ॉलबैक को परिभाषित करें और रीसेट की व्याख्या करें।
क्या कोई संस्करण फ़ील्ड लोकलस्टोरेज डेटा को विश्वसनीय बनाता है?
नहीं, यह अपेक्षित आकार की पहचान करता है ताकि गेम इसे स्थानांतरित या अस्वीकार कर सके। डेटा अभी भी गायब, विकृत, पुराना या अनुपलब्ध हो सकता है, इसलिए इसका उपयोग करने से पहले सत्यापित करें।
आगे पढ़ें
कोई पुरानी जानकारी दिखी? सुधार की जानकारी दें