html - स्थानीय भंडारण बनाम कुकीज़




cookies httprequest (4)

कुकीज़ और स्थानीय भंडारण विभिन्न उद्देश्यों को पूरा करते हैं। कुकीज मुख्य रूप से सर्वर-साइड पढ़ने के लिए होती हैं , स्थानीय संग्रहण केवल क्लाइंट-साइड द्वारा पढ़ा जा सकता है। तो सवाल यह है कि, आपके ऐप में, इस डेटा की आवश्यकता है - क्लाइंट या सर्वर?

यदि यह आपका ग्राहक (आपकी जावास्क्रिप्ट) है, तो हर तरह से स्विच करें। आप प्रत्येक HTTP शीर्षलेख में सभी डेटा भेजकर बैंडविड्थ बर्बाद कर रहे हैं।

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

आप अपनी सत्र कुकी को कुकी के रूप में किसी भी तरह से छोड़ना चाहेंगे।

तकनीकी अंतर के अनुसार, और मेरी समझ के अनुसार:

  1. डेटा बचाने का पुराना तरीका होने के अलावा, कुकीज़ आपको 4096 बाइट्स (40 9 5, वास्तव में) की सीमा प्रदान करती है - इसकी प्रति कुकी। स्थानीय संग्रहण 5 एमबी प्रति डोमेन जितना बड़ा है - SO प्रश्न भी इसका उल्लेख करता है

  2. localStorage Storage इंटरफेस का कार्यान्वयन है। यह बिना किसी समाप्ति तिथि वाले डेटा संग्रहीत करता है, और केवल जावास्क्रिप्ट के माध्यम से साफ़ हो जाता है, या ब्राउज़र कैश / स्थानीय रूप से संग्रहीत डेटा को साफ़ करता है - कुकी समाप्ति के विपरीत।

मैं सभी कुकीज़ को स्थानीय स्टोरेज में ले जाकर अपनी वेबसाइटों पर लोड समय कम करना चाहता हूं क्योंकि उनके पास समान कार्यक्षमता प्रतीत होती है। क्या स्पष्ट संगतता मुद्दों को छोड़कर कुकी कार्यक्षमता को प्रतिस्थापित करने के लिए स्थानीय संग्रहण का उपयोग करने में कोई पेशेवर / विपक्ष (विशेष रूप से प्रदर्शन-वार) है?


खैर, स्थानीय स्टोरेज की गति क्लाइंट के साथ-साथ ऑपरेटिंग सिस्टम के ब्राउज़र पर निर्भर करती है। एक मैक पर क्रोम या सफारी एक पीसी पर फ़ायरफ़ॉक्स की तुलना में बहुत तेज़ हो सकता है, खासकर नए एपीआई के साथ। हमेशा के रूप में, परीक्षण आपका दोस्त है (मुझे कोई बेंचमार्क नहीं मिला)।

मुझे वास्तव में कुकी बनाम स्थानीय भंडारण में एक बड़ा अंतर नहीं दिखता है। साथ ही, आपको संगतता समस्याओं के बारे में अधिक चिंतित होना चाहिए: सभी ब्राउज़रों ने नए HTML5 एपीआई का समर्थन भी शुरू नहीं किया है, इसलिए कुकीज़ गति और संगतता के लिए आपकी सबसे अच्छी शर्त होगी।


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

कुकीज़

पेशेवरों

  • विरासत समर्थन (यह हमेशा के लिए रहा है)
  • लगातार डेटा
  • समाप्ति की तिथियां

विपक्ष

  • प्रत्येक डोमेन अपनी सभी कुकीज़ को एक स्ट्रिंग में संग्रहीत करता है, जो पार्सिंग डेटा को मुश्किल बना सकता है
  • डेटा अनएन्क्रिप्टेड है, जो एक मुद्दा बन जाता है क्योंकि ... ... हालांकि आकार में छोटा, कुकीज़ प्रत्येक HTTP अनुरोध के साथ भेजा जाता है सीमित आकार (4 केबी)
  • एक कुकी से एसक्यूएल इंजेक्शन किया जा सकता है

स्थानीय भंडार

पेशेवरों

  • अधिकांश आधुनिक ब्राउज़रों द्वारा समर्थन
  • लगातार डेटा जो ब्राउज़र में सीधे संग्रहीत होता है
  • समान मूल नियम स्थानीय संग्रहण डेटा पर लागू होते हैं
  • प्रत्येक HTTP अनुरोध के साथ नहीं भेजा जाता है
  • ~ 5 एमबी स्टोरेज प्रति डोमेन (वह 5120 केबी है)

विपक्ष

  • पहले कुछ भी समर्थित नहीं है: आईई 8, फ़ायरफ़ॉक्स 3.5, सफारी 4, क्रोम 4, ओपेरा 10.5, आईओएस 2.0, एंड्रॉइड 2.0
  • यदि सर्वर को संग्रहीत क्लाइंट जानकारी की आवश्यकता है तो आपको जानबूझकर इसे भेजना होगा।

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

/* 
* function body that test if storage is available
* returns true if localStorage is available and false if it's not
*/
function lsTest(){
    var test = 'test';
    try {
        localStorage.setItem(test, test);
        localStorage.removeItem(test);
        return true;
    } catch(e) {
        return false;
    }
}

/* 
* execute Test and run our custom script 
*/
if(lsTest()) {
    // window.sessionStorage.setItem(name, 1); // session and storage methods are very similar
    window.localStorage.setItem(name, 1);
    console.log('localStorage where used'); // log
} else {
    document.cookie="name=1; expires=Mon, 28 Mar 2016 12:00:00 UTC";
    console.log('Cookie where used'); // log
}

"सिक्योर (एसएसएल) पृष्ठों पर लोकल स्टोरेज वैल्यू अलग हैं" जैसा कि किसी ने देखा है कि अगर आप 'http' से 'https' सुरक्षित प्रोटोकॉल पर स्विच करते हैं तो स्थानीय स्टोरेज उपलब्ध नहीं होगा, जहां कुकी अभी भी एक्सेसिबल होगी। यदि आप सुरक्षित प्रोटोकॉल के साथ काम करते हैं तो यह जानना महत्वपूर्ण है।


स्थानीय भंडारण 10 एमबी ऑफ़लाइन डेटा स्टोर कर सकता है, जबकि सत्र 5 एमबी डेटा तक स्टोर कर सकता है। लेकिन कुकीज़ टेक्स्ट प्रारूप में केवल 4 केबी डेटा स्टोर कर सकते हैं।





local-storage