कुकी, Local Storage और IndexedDB: सेशन असल में क्या है

साइन-इन करना तीन अलग जगहों पर लिखता है। यह जानना कि कौन सी कौन सी है, समझाता है कि सेशन कुछ चीज़ों से क्यों बचे रहते हैं, कुछ पर क्यों टूट जाते हैं, और प्रोफ़ाइल सिंक करने में तीनों को क्यों ले जाना पड़ता है।
"लॉग इन होना" एक चीज़ जैसा लगता है। असल में यह कम से कम तीन हैं, तीन अलग जगहों पर, तीन अलग जीवनकालों के साथ, और यही अंतर सेशनों को मशीनों के बीच ले जाते समय लोगों के सामने आने वाले ज़्यादातर उलझाने वाले व्यवहार को समझाता है।
कुकी
छोटी की-वैल्यू जोड़ियाँ, जो उन्हें सेट करने वाली साइट को हर रिक्वेस्ट के साथ अपने आप भेजी जाती हैं। सेशन टोकन आम तौर पर यहीं रहता है।
- डोमेन और पाथ तक सीमित, एक्सपायरी तारीख के साथ।
- `Secure` कुकी सिर्फ़ HTTPS पर भेजी जाती है; `HttpOnly` कुकी पेज के JavaScript को दिखाई नहीं देती।
- सेशन कुकी की कोई एक्सपायरी नहीं होती और वह ब्राउज़र बंद होने पर गायब होने के लिए है।
तीनों में कुकी सबसे छोटी और सबसे ज़्यादा बोझ उठाने वाली हैं। उन्हें खो दें तो आप साइन-आउट हो जाते हैं।
Local Storage और Session Storage
स्ट्रिंग की-वैल्यू स्टोरेज, जिसे पेज का JavaScript पढ़ता और लिखता है, प्रति ऑरिजिन सीमित। यह रिक्वेस्ट के साथ कभी नहीं भेजा जाता। पेज को उसे जानबूझकर पढ़ना पड़ता है।
एप्लिकेशन यहाँ पसंद, कैश की हुई प्रोफ़ाइल जानकारी, फ़ीचर फ़्लैग और अक्सर रिफ़्रेश टोकन रखते हैं। Local Storage साफ़ किए जाने तक बना रहता है; Session Storage सिर्फ़ टैब के जीवित रहने तक रहता है।
IndexedDB
ब्राउज़र में असली डेटाबेस: संरचित रिकॉर्ड, इंडेक्स, ट्रांज़ैक्शन। आधुनिक वेब एप्लिकेशन यहाँ हर ठोस चीज़ रखता है: कैश किए संदेश इतिहास, ऑफ़लाइन कतारें, एंड-टू-एंड एन्क्रिप्टेड फ़ीचर की एन्क्रिप्शन कीज़।
प्रोफ़ाइल के लिए यह क्यों मायने रखता है
यह "आइसोलेशन" को सटीक अर्थ देता है। दो प्रोफ़ाइल तब आइसोलेटेड हैं जब ये तीनों अलग हों, साथ में कैश और एक्सटेंशन की स्थिति भी। जो टूल कुकी को आइसोलेट करता है और IndexedDB साझा करता है, उसने समस्या का सिर्फ़ आसान तिहाई हिस्सा आइसोलेट किया है।
यह प्रोफ़ाइल को मशीनों के बीच ले जाने का पैमाना भी तय करता है। सिर्फ़ कुकी ले जाना सेशन का आकार दोहराता है, उसका सार नहीं।
| स्टोर | कौन लिखता है | आम तौर पर क्या रखता है |
|---|---|---|
| कुकी | सर्वर और पेज स्क्रिप्ट | सेशन टोकन, पसंद, ट्रैकिंग आइडेंटिफ़ायर |
| Local Storage | पेज स्क्रिप्ट | रिफ़्रेश टोकन, UI की स्थिति, कैश की हुई प्रोफ़ाइल जानकारी |
| Session Storage | पेज स्क्रिप्ट | प्रति टैब स्थिति, टैब बंद होने पर हटा दी जाती है |
| IndexedDB | पेज स्क्रिप्ट | कैश किया डेटा, ऑफ़लाइन कतारें, एन्क्रिप्शन कीज़ |
अपनी ही मशीनों के बीच सेशन ले जाना
PowerOps प्रोफ़ाइल बंद होने पर कुकी, Local Storage और IndexedDB कैप्चर करता है और उन्हें कहीं और खुलने पर बहाल करता है। हर श्रेणी एक स्विच है, पूरे वर्कस्पेस के लिए या किसी एक प्रोफ़ाइल के लिए, ताकि आप ठीक उतना ही ले जाएँ जितना चाहते हैं।
यह कैसे काम करता है, इसके बारे में दो बातें जानने लायक हैं:
- स्नैपशॉट उस मशीन पर एन्क्रिप्ट होता है जहाँ से वह आया, वर्कस्पेस की अपनी की से, और प्रोफ़ाइल खोलने वाली मशीन पर डिक्रिप्ट होता है। यह एंड-टू-एंड एन्क्रिप्शन नहीं है: सेवा उस की की एक कॉपी रखती है ताकि आपके दूसरे कंप्यूटर उसे पा सकें।
- प्रोफ़ाइल एक समय में एक मशीन पर खुला रहता है। खुले रहने के दौरान वह एक लीज़ थामे रखता है, और दूसरे डिवाइस को बताया जाता है कि किस डिवाइस के पास वह है, बजाय इसके कि सेशन को दो अलग-अलग प्रतियों में बँटने दिया जाए।
यह दूसरी बात जानबूझकर रखी गई सीमा है। एक सेशन को स्वतंत्र रूप से संपादित करती दो मशीनें दो आधे-वैध सेशन बनाती हैं और, काफ़ी बार, दोनों पर साइन-आउट अकाउंट। कुकी जार के पास मर्ज संघर्ष सुलझाने का कोई तरीका नहीं है।
व्यावहारिक निष्कर्ष
प्रोफ़ाइल को मारने के बजाय बंद करें। बंद होने पर होने वाली राइट-आउट ही सेशन को पोर्टेबल बनाती है, और इस सूची में यह सबसे सस्ती आदत है।

