2010-12-06 8 views
5

का उपयोग कर पूरी फाइलों को सहेजें मैं मुख्य रूप से मोबाइल उपकरणों (यानी बैंडविड्थ प्रतिबंध) पर उपयोग किए जाने वाले वेब ऐप में कुछ जेएस और सीएसएस फ़ाइलों को 'कैश' करने के लिए localStorage का उपयोग करना चाहता हूं। एक छोटा सा setup.js युक्त कोड कि localStorage की जाँच करता है देखने के लिए अगर bigScriptFile.js पहले से संग्रहीत किया गया है साथस्थानीय स्टोरेज

  1. पृष्ठ लोड: मैं यह कुछ इस तरह काम करेगा सोच रहा हूँ।
    1. यदि यह संग्रहीत नहीं है, तो bigScriptFile.js अगली विज़िट के लिए डाउनलोड और संग्रहीत किया जाता है।
    2. यदि यह संग्रहीत किया गया है, तो bigScriptFiles.jslocalStorage से पढ़ सकते हैं और भरी हुई है/चलाने के रूप में अगर यह एक सामान्य फ़ाइल की तरह डाउनलोड किया गया था (यानी, <script src="http://example.com/bigScriptFile.js"></script>)

क्या मुझे यकीन है कि कैसे करने के लिए नहीं कर रहा हूँ चरण 1.1 है - जेएस फ़ाइल संग्रहित। (मुझे लगता है मैं localStorage में केवल दुकान तार और मुझे पता है कि कर सकते हैं कि JSON.stringify() उपयोग करने के लिए कैसे पता है।)

निश्चित रूप से यह बच() का उपयोग कर के रूप में सरल नहीं है:
localStorage.setItem('bigScriptFile', escape('myJScode')) स्टोर करने के लिए, और
unescape(localStorage.getItem['bigScriptFile']) जब

पुन: प्राप्त करने

भले ही यह आसान है, मैं स्ट्रिंग के रूप में bigScriptFile.js की सामग्री प्राप्त करने के लिए जेएस का उपयोग कैसे करूं? शायद एक PHP स्क्रिप्ट पर AJAX कॉल करके सामग्री को वापस कर देता है?

उत्तर

11

आपको जेएस फाइलों पर सही कैश हेडर डालना चाहिए या HTML5 cache manifest देखें।

W3C specification

+0

क्या करने का इरादा है, तो मैं इसे सही ढंग से समझ, प्रकट केवल ब्राउज़र कैश में फ़ाइलों को नियंत्रित करता है के लिए काम कर सकते हैं देखा है। यदि कैश साफ़ हो जाता है, तो फ़ाइलों को फिर से लोड किया जाना चाहिए। चूंकि यह ऐप प्राथमिक रूप से आईओएस उपकरणों पर चलने का इरादा रखता है, जहां अन्य चीजों के साथ, सफारी में खोले गए पृष्ठों को कभी-कभी स्मृति को पुनः प्राप्त करने के लिए फ़्लश किया जाता है, मैं कुछ और स्थायी खोज रहा हूं। मुझे इसका एहसास है कि मुझे यह जांचने के लिए एक तरीका चाहिए कि 'लोकल स्टोरेज' संस्करण पुराना है (और यदि ऐसा है, तो जानबूझकर नए संस्करण को डाउनलोड और स्टोर करें) लेकिन यह बहुत कठिन नहीं होना चाहिए। मैं एक पूरी जेएस फ़ाइल को एक स्ट्रिंग – craigpatik

+1

के रूप में विश्वसनीय स्टोर करने के तरीके से अधिक चिंतित हूं, नहीं, कैश मेनिफेस्ट में फ़ाइलों को ऑफ़लाइन/बाद के उपयोग के लिए संग्रहीत किया जाता है। आप ब्राउज़र को बंद कर सकते हैं और एकमात्र फ़ाइल जिसे पुनः लोड किया जा रहा है वह कैश मेनिफेस्ट फ़ाइल है। मैं अधिकार सुरक्षित रखता हूं कि मुझे नहीं पता कि सफारी में आईओएस –

+0

पर कैश मैनिफेस्ट कैसे किया जाता है, कैश मैनिफेस्ट ऑफ़लाइन वेबैप के लिए है - अगर मैनिफेस्ट बदल जाता है तो ब्राउजर को सभी संसाधनों को प्रमाणित करना होगा। जब तक आपका मेनिफेस्ट नहीं बदला जाता है, तब तक फाइलें जिंदा रहेंगी, और जब ब्राउज़र इंटरनेट से कनेक्ट नहीं हो सकता है तो आपकी साइट भी काम करेगी। – olliej