2013-10-10 11 views
57

मुझे क्लाइंट-साइड डेटा संग्रहित करने में समस्या है, और मैं यह तय नहीं कर सकता कि कौन सा तरीका बेहतर है। अब मैं AngularJS के कैश फैक्टरी का उपयोग कर रहा हूं, यह ठीक काम करता है, लेकिन सभी डेटा एक नए सत्र के साथ पुनः लोड हो जाता है। क्या इसके बजाय स्थानीय भंडारण का उपयोग करना उचित है?

+0

हैलो आप वेबस्टोरेज का उपयोग कर सकते हैं तो आप एक कारखाने के साथ डेटा ला सकते हैं, http://www.w3schools.com/html/html5_webstorage.asp – schwertfisch

+0

हाँ स्थानीय स्टोरेज आपको सत्र की देखभाल किए बिना डेटा स्टोर करने देता है। मैं सर्वर के बजाय क्लाउड में डेटा सहेजने के लिए https://parse.com/ को देखने की भी सिफारिश करूंगा। – Rohit

+1

मैं https://github.com/gsklee/ngStorage द एंगुलर-वे: नो गेटटर 'एन' सेटर बुलशिट के साथ जा रहा हूं! – mb21

उत्तर

81

यदि आपका लक्ष्य क्लाइंट-साइड और लगातार डेटा स्टोर करना है, तो आप $cacheFactory का उपयोग नहीं कर सकते हैं, जो वर्तमान सत्र के लिए डेटा को कैश करता है।

एक समाधान नई स्थानीय स्टोरेज एपीआई का उपयोग करना है। This awesome Angular module आपके लिए सभी गंदे काम करता है, और यहां तक ​​कि पुरानी ब्राउज़रों के लिए कुकीज़ पर भी वापस आ जाता है!

+1

क्या यह स्टोर ऑब्जेक्ट्स है? – Rasalom

+1

नहीं, आपको स्टोर करने से पहले अपनी ऑब्जेक्ट्स को क्रमबद्ध करना चाहिए (और उन्हें पढ़ने के लिए अनसुलझा), आमतौर पर JSON में। लेकिन ऑब्जेक्ट्स को सीधे स्टोर करने के लिए बहुत सारी इंद्रियां नहीं होती हैं, क्योंकि सभी लगातार स्टोरेज फाइलों का उपयोग करना अनिवार्य है, और इसलिए रैखिक डेटा। – Blackhole

+0

बहुत बहुत धन्यवाद :) – Rasalom

20

एक वैकल्पिक समाधान http://jmdobry.github.io/angular-cache/ है जो ngResource के साथ अच्छी तरह से काम करता है और आसानी से स्थानीय स्टोरेज को सिंक करने के लिए कॉन्फ़िगर किया जा सकता है, इसलिए पेज रीफ्रेश के बाद अनुरोधों को फिर से करने की आवश्यकता नहीं है।

$resource('my/kewl/url/:key', { key: '@key' }, { 
 'get': { method: 'GET', 
      cache: $angularCacheFactory('MyKewlResourceCache', { 
              storageMode: 'localStorage' }) 
     } 
}); 
+0

मुझे लगता है कि यह स्वीकार किए गए उत्तर से समाधान से अधिक शक्तिशाली है। $ संसाधन के बारे में धन्यवाद इसे अपनी आधिकारिक वेबसाइट –

1

$ cacheFactory, स्पष्ट रूप से नहीं होने के लिए अपने समाधान लगता है क्योंकि के रूप में ब्लैकहोल कहा, कैश हर बार सत्र समाप्त हो साफ हो जाएगा। $ cacheFactory सिर्फ एक memcache कार्यान्वयन कोणीय तरीका है।

कोणीय-कैश सिर्फ एक सहायक एपीआई है, मूल रूप से यह $ cacheFactory के विकल्प को जोड़ता है और इस विकल्प में से एक को लगातार भंडारण (जैसे स्थानीय स्टोरेज) में कैश स्टोर करना है।

तो अगर आप लगातार भंडारण में डेटा स्टोर करना चाहते हैं आप की तरह उपलब्ध मॉड्यूल के उपयोग से एक का उपयोग कर सकते हैं angular-local-storage या $cookieStore का उपयोग, लेकिन यह एक और कोणीय मॉड्यूल है कि काम करता है कुकीज़ पैदा करेगा ...

+0

में फिर से नहीं देखता है, $ cacheFactory वर्तमान सत्र के लिए डेटा कैश नहीं करता है, यह स्मृति में डेटा को कैश करता है, इसलिए केवल जब तक आपका कोणीय अनुप्रयोग जीवित रहता है। एक पृष्ठ ताज़ा करें, उदाहरण के लिए, इसे मारता है। @ user3305685 क्या आप इसे भ्रामक लोगों से बचने के लिए अपडेट कर सकते हैं? – tsemer

संबंधित मुद्दे