एचटीएमएल 5 स्थानीय भंडारण बनाम सत्र भंडारण


560

केवल वर्तमान विंडो में गैर-स्थिर और स्कोप होने के अलावा, क्या स्थानीय संग्रहण पर सत्र संग्रहण के लिए कोई लाभ (प्रदर्शन, डेटा एक्सेस, आदि) हैं?


15
@robert - मेरा मानना ​​है कि आप गलत हैं। से w3.org/TR/webstorage sessionStorage "उच्च-स्तरीय ब्राउज़िंग संदर्भ" के दायरे वाला, जिसका अर्थ यह प्रत्येक ब्राउज़र टैब / विंडो के लिए अद्वितीय है। लोकलस्टोरेज को मूल रूप से अलग किया जाता है, हालांकि, इसका अर्थ है कि यह एक ही मूल पर सभी पृष्ठों पर साझा किया गया है।
ब्रूफो


जवाबों:


811

स्थानीयस्टोरेज और सेशनस्टोरेज दोनों ही स्टोरेज को बढ़ाते हैं । के "गैर-हठ" को छोड़कर उनके बीच कोई अंतर नहीं है sessionStorage

अर्थात्, संग्रहीत डेटा localStorage स्पष्ट रूप से हटाए जाने तक बनी रहती है । किए गए परिवर्तन सहेजे गए हैं और साइट पर सभी वर्तमान और भविष्य की यात्राओं के लिए उपलब्ध हैं।

के लिए sessionStorage, परिवर्तन केवल प्रति टैब उपलब्ध हैं। किए गए परिवर्तन सहेजे और उपलब्ध वर्तमान पृष्ठ के लिए कर रहे हैं कि टैब में जब तक यह बंद रहता है। एक बार जब यह बंद हो जाता है, तो संग्रहीत डेटा हटा दिया जाता है।


17
एक व्यापक चर्चा है कि आप यहाँ सहायक हो सकते हैं: stackoverflow.com/questions/19867599/…
एड साइक्स

13
अगर आप http के तहत स्टोरेज में कुछ डेटा बचाते हैं, तो आप इसे https
मार्क थिएन

मैंने इसे क्रोम v41.x पर परीक्षण किया है और ऐसा लगता है कि https के बारे में उपरोक्त कथन सत्य नहीं है: localStorage अपने संग्रहीत डेटा को बरकरार रखता है।
CCC

36
SessionStorage पेज रीलोड और रीस्टोर पर बच जाता है, लेकिन एक नया टैब / विंडो खोलने से एक नया सत्र शुरू होगा।
पैट्रिक

160

अंतर केवल इतना है कि लोकलस्टोरेज का समय समाप्त होने का एक अलग समय होता है, sessionStorageयह केवल तब तक सुलभ होगा जब तक कि इसे बनाया गया खिड़की से खुला हो।
localStorageजब तक आप इसे हटाते हैं या उपयोगकर्ता इसे हटाता है तब तक रहता है।
कहते हैं कि चलो कि आप एक लॉगिन उपयोगकर्ता नाम और पासवर्ड का उपयोग करना चाहते हैं को बचाने के लिए करना चाहता था sessionStorageसे अधिक localStorageसुरक्षा कारणों से (यानी। एक और व्यक्ति को बाद में उनके खाते तक पहुंचने में)।
लेकिन अगर आप किसी उपयोगकर्ता की सेटिंग को उनकी मशीन पर सहेजना चाहते हैं, तो आप शायद चाहेंगे localStorage। सब मिलाकर:

localStorage- दीर्घकालिक उपयोग के लिए उपयोग करें।
sessionStorage- उपयोग करते समय आपको कुछ ऐसी चीजों को स्टोर करने की आवश्यकता होती है जो बदल जाती हैं या अस्थायी रूप से सक्रिय होती हैं


103

कुछ अन्य बिंदु जो स्थानीय और सत्र भंडारण के बीच अंतर को समझने में मददगार हो सकते हैं

  1. स्थानीय भंडारण और सत्र भंडारण दोनों को दस्तावेज़ उत्पत्ति के लिए स्कोप किया जाता है, इसलिए

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    उपरोक्त सभी URL समान संग्रहण साझा नहीं करेंगे । (वेब पेज का सूचना पथ वेब संग्रहण को प्रभावित नहीं करता है)

  2. दस्तावेज़ के लिए अलग-अलग टैब में भी समान मूल नीति खुली है, इसलिए दो अलग-अलग टैब में खुले एक ही वेब पेज एक ही सत्र के भंडारण को साझा नहीं कर सकते हैं

  3. दोनों स्थानीय और सत्र भंडारण भी ब्राउज़र विक्रेताओं द्वारा scoped हैं । इसलिए IE द्वारा सहेजे गए संग्रहण डेटा को Chrome या FF द्वारा नहीं पढ़ा जा सकता है।

उम्मीद है की यह मदद करेगा।


3
नहीं, http और https के बीच एक ही सेशनस्टेज शेयर है, लेकिन लोकलस्टोरेज नहीं।
शाहदत

5
अगर आप पहले सेशनस्टोरेज को https उत्पत्ति में सेट करते हैं, तो यह http में उपलब्ध होगा, लेकिन यदि आप http में सेशनस्टोर बनाते हैं, तो यह http
शाहदत

4
@ शहादत, क्या आपका मतलब "तब https में उपलब्ध नहीं होगा" (नोटिस एस)?
डेनियल वर्नर

3
@DanielWerner हाँ, यदि आप http में sessionStore बनाते हैं तो https में उपलब्ध नहीं होंगे।
शाहदत

28

के बीच मुख्य अंतर localStorageऔर sessionStorageवह यह है कि sessionStorageटैब प्रति अद्वितीय है। यदि आप टैब sessionStorageहटाए गए हटाएं को बंद करते हैं , localStorageतो नहीं। इसके अलावा आप टैब के बीच संवाद नहीं कर सकते :)

एक और सूक्ष्म अंतर यह है कि उदाहरण के लिए Safari (8.0.3) localStorageपर 2551 k वर्णों की सीमा है लेकिन sessionStorageहै असीमित भंडारण

क्रोम (v43) पर दोनों localStorageऔर sessionStorage5101 कश्मीर वर्ण (सामान्य / गुप्त मोड के बीच कोई अंतर) तक ही सीमित हैं

फ़ायरफ़ॉक्स दोनों पर localStorageऔर sessionStorage5120 k अक्षर तक सीमित हैं (सामान्य / निजी मोड के बीच कोई अंतर नहीं)

गति में कोई अंतर नहीं :)

मोबाइल सफारी और मोबाइल क्रोम के साथ भी एक समस्या है, प्राइवेट मोड सफारी और क्रोम में 0KB का अधिकतम स्थान है


1
5101 k अक्षर तक सीमित? तो .. 5.101 मिलियन अक्षर?
झज्जर

@Zze हाँ, 1 वर्ण आमतौर पर 1 बाइट है इसलिए 5 मिलियन वर्ण 5Mb संग्रहण के लायक है।
बासिम खाजवाल

@BasimKhajwal यह 5MB है। बाइट्स, बिट्स नहीं।
यति

क्या आपने जो उल्लेख किया है, क्या आप उसमें स्रोत जोड़ सकते हैं?
मुकुस

@ मूकस, कोई स्रोत नहीं है, मैंने खुद परीक्षण किए, और इसमें लोकलस्टोरीज होने के लिए प्राइवेट मोड सफारी के साथ एक मुद्दा था, लेकिन वहां कोई जगह नहीं थी और स्थानीय पॉलीस्ट्रॉज के अस्तित्व में आने के बाद से मेरी पॉलीफ़िल ट्रिगर नहीं होगी, लेकिन स्क्रिप्ट तब तक विफल रही जब तक यह स्टोर नहीं हो सका। वहाँ कुछ भी। आप इस टूल का उपयोग करके भी परीक्षण कर सकते हैं - dev-test.nemikor.com/web-storage/support-test
Eek

17

sessionStorageयह वैसा ही है localStorage, सिवाय इसके कि यह केवल एक सत्र के लिए डेटा संग्रहीत करता है, और उपयोगकर्ता द्वारा बनाई गई ब्राउज़र विंडो को बंद करने पर इसे हटा दिया जाएगा।


10

प्रदर्शन के लिहाज से, मेरे (क्रूड) माप में 1000 लिखने और पढ़ने पर कोई अंतर नहीं पाया गया

सुरक्षा के लिहाज से, सहज रूप से ऐसा लगता है कि सेशन से पहले लोकलस्टोर बंद हो सकता है, लेकिन इसका कोई ठोस सबूत नहीं है - शायद कोई और करता है?

कार्यात्मक बुद्धिमान, ऊपर डिजिटल के साथ संक्षिप्त


1
पृष्ठ लोड प्रदर्शन के बारे में: दोनों, सेशनस्टोरेज और लोकलस्टेजेज पेज-लोड-रेंडर चक्र के बाहर शुरू और आबाद होते हैं। इसलिए प्रारंभिक पृष्ठ लोड समय पर टोल ब्राउज़र के भीतर से मापने योग्य नहीं है।
मिरको

6

हां सेशन स्टोरेज और लोकल स्टोरेज व्यवहार में एक को छोड़कर एक है जो कि लोकल स्टोरेज है, जब तक कि डेटा को स्टोर नहीं करेगा और जब तक यूजर कैश और कुकीज को डिलीट नहीं करता है और सेशन स्टोरेज डेटा तब तक सिस्टम में बरकरार रहेगा, जब तक हम सेशन को बंद नहीं कर देते, तब तक जब तक हम बंद नहीं कर देते सत्र भंडारण विंडो बनाई गई।


5

मेरी राय में, स्थानीय भंडारण पर सत्र भंडारण का लाभ यह है कि इसकी फ़ायरफ़ॉक्स में असीमित क्षमता है, और यह सत्र से अधिक समय तक नहीं रहेगा। (बेशक यह इस पर निर्भर करता है कि आपका लक्ष्य क्या है।)


2

स्थानीय भंडारण: यह उपयोगकर्ता की जानकारी के डेटा को समाप्ति तिथि के बिना संग्रहीत करता है यह डेटा तब नहीं हटाया जाएगा जब उपयोगकर्ता ब्राउज़र विंडो बंद कर देगा, यह दिन, सप्ताह, महीने और वर्ष के लिए उपलब्ध होगा।

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

सत्र संग्रहण: यह लोकल स्टोरेज डेट की तरह ही है, सिवाय इसके कि जब कोई वेब यूजर द्वारा ब्राउजर विंडो को बंद किया जाता है तो वह सभी विंडो को डिलीट कर देगा।

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

और पढ़ें क्लिक करें


2
  • sessionStorage प्रत्येक दिए गए मूल के लिए एक अलग भंडारण क्षेत्र बनाए रखता है जो पेज सत्र की अवधि के लिए उपलब्ध है (जब तक ब्राउज़र खुला है, पेज रीलोड और पुनर्स्थापना सहित)

  • localStorage एक ही बात करता है, लेकिन ब्राउज़र बंद होने और फिर से खोलने पर भी बनी रहती है।

मैंने इसे https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API से लिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.