2011-07-16 17 views
15

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

+0

इस सवाल पर एक नज़र डालें।com/प्रश्न/3625640/डाउनलोड-छवियों और सहेजें-स्थानीय स्तर पर-ऑन-iphone-phonegap-ऐप –

उत्तर

9

आपके जैसे कैशिंग को सरल ऑफलाइन ऑपरेशन की आवश्यकता हो सकती है, यह बिल्कुल आसान नहीं है।

आपका पहला विकल्प cache manifest है। इसमें कुछ सीमाएं हैं (कैश के आकार की तरह) लेकिन यह आपके लिए काम कर सकती है क्योंकि यह आपके इच्छित काम करने के लिए डिज़ाइन की गई थी।

एक और विकल्प यह है कि आप फ़ाइल सिस्टम एपीआई का उपयोग कर डिवाइस की डिस्क पर सामग्री स्टोर कर सकते हैं। इसमें सुरक्षा जैसी कुछ कमीएं हैं और तथ्य यह है कि आपको फ़ाइल को पथ/यूआरएल से लोड करना होगा जो आपके से अलग है, आमतौर पर इसे वेब पर लोड कर सकता है। इसके उदाहरण के लिए hydra प्लगइन देखें।

स्थानीय स्टोरेज में सामानों को स्टोर करने का एक अंतिम विकल्प हो सकता है (जिसमें सभी प्लेटफॉर्म पर निजी होने का लाभ होता है) और फिर आवश्यकता होने पर इसे बाहर खींचें ... इसका मतलब है कि आपकी सभी छवियों का आधार 64 है बस मानक कैशिंग से एक बहुत बड़ा प्रस्थान।

+0

कृपया ध्यान दें कि अब आवेदन कैशिंग (प्रकट) का उपयोग करने के अत्यधिक निरुत्साहित किया जाता है मोज़िला के अनुसार: https: //developer.mozilla .org/en-US/docs/वेब/HTML/Using_the_application_cache –

23

छवियों को कैश करने के लिए इस लाइब्रेरी को देखें- जिसमें मैं निर्माता हूं- imgcache.js । यह स्थानीय फाइल सिस्टम का उपयोग कर छवियों को कैशिंग करने के बहुत ही उद्देश्य के लिए डिज़ाइन किया गया है। यदि आप उदाहरण देखेंगे तो आप देखेंगे कि यह भी पता लगा सकता है कि कोई छवि लोड होने में विफल होती है (क्योंकि आप ऑफ़लाइन हैं या आपके पास बहुत खराब कनेक्शन है) और फिर कैश की गई छवि के साथ इसे स्वचालित रूप से बदल देता है। वेबपैप का उपयोगकर्ता यह ऑफ़लाइन भी नहीं देखता है।

एचटीएमएल पृष्ठों के लिए .. यदि वे एचटीएमएल स्थिर फाइलें हैं, तो उन्हें वेब ऐप में स्थानीय रूप से संग्रहीत किया जा सकता है (फ़ाइल: // फोनगैप में)। यदि वे गतिशील रूप से जेनरेट किए गए पृष्ठ हैं, तो स्थानीय स्टोरेज एपीआई जांचें यदि आपके पास डेटा की एक छोटी राशि है, अन्यथा फाइल सिस्टम एपीआई।

मेरे वेब ऐप के लिए मैं अपने सर्वर से केवल जेसन डेटा पुनर्प्राप्त करता हूं (और Backbone + अंडरस्कोर का उपयोग करके इसे प्रोसेस/प्रस्तुत करता हूं)। जेसन पेलोड को स्थानीय स्टोरेज में संग्रहीत किया जाता है। यदि एप्लिकेशन ऑफ़लाइन हो जाता है, तो यह सर्वर के बजाय स्थानीय स्टोरेज से जेसन डेटा (बैकबोन ड्यूलस्टॉरेज के घर-बेक्ड कांटा)

आपको पूर्ण ऑफ़लाइन अनुभव प्राप्त होता है: पृष्ठ + छवियां।

+1

मैं Phonegap के नवीनतम निर्माण (2.2.0) के साथ इस प्रयोग किया जाता है और यह एक का इलाज काम किया! – Max

+0

मैं imgcache.js का उपयोग कर रहा हूँ। छवि फ़ाइल कैशिंग करते समय, यह icon.png को विभिन्न नामों जैसे 7678dkld9dio.png से सहेजता है। क्या कुछ याद आ रहा है? यह छवि फ़ाइल का नाम बदलता है। उदाहरण के लिए :) खोल @ एंड्रॉइड:/स्टोरेज/एसडीकार्ड 0/डब्ल्यूएस $ एलएस एनर्जी.png खोल @ एंड्रॉइड:/स्टोरेज/एसडीकार्ड 0/डब्ल्यूएस $ सीडी .. खोल @ एंड्रॉइड:/स्टोरेज/एसडीकार्ड 0 $ सीडी imgcache/ खोल @ एंड्रॉइड:/स्टोरेज/sdcard0/imgcache $ ls – yokks

+1

यह सही है और यह डिज़ाइन द्वारा ऐसा है। इसका उद्देश्य नाम टकराव से बचने के लिए है: आपके पास एक ही फ़ाइल नाम के साथ दो अलग-अलग छवियां हो सकती हैं लेकिन कैश में एक अलग यूआरएल हो सकती है, अगर फाइलों का नाम कैश में एक अद्वितीय फ़ाइल नाम के साथ नहीं बदला गया है (वे सभी एक ही फ़ोल्डर में संग्रहीत हैं) दो छवियों में से केवल एक को सहेजा जाएगा, दूसरे को बदल देगा। – chrisben

1

एंड्रॉइड ओएस पर कैशिंग बहुत संभव है। लेकिन उपरोक्त वर्णित ऐप्पल पर छवियों और कैश आकार इत्यादि के आकार की सीमाएं हैं

यदि आप आईओएस पर कैशिंग को एकीकृत और अनुमति देने के इच्छुक हैं तो आप ऐसा करने के लिए "कैश मैनिफेस्ट" का उपयोग कर सकते हैं। लेकिन ड्रॉ बैक और सीमाओं को ध्यान में रखें। यदि आप फ़ाइल को मेरे ऐप के तहत दस्तावेज़ फ़ोल्डर में सहेजना चाहते हैं, तो ऐप्पल आपके ऐप को अस्वीकार कर देगा। आईओएस 6 के बाद iCould में दस्तावेज़ फ़ोल्डर के तहत सभी डेटा सिस्टम बैकअप का कारण है, इसलिए ऐप्पल छवियों या JSON फ़ाइल जैसे बड़े डेटा की अनुमति नहीं देता है जो इस फ़ोल्डर में रखने के लिए आपके सर्वर से फिर से सिंक हो सकता है।

तो एक और काम है जिसके आसपास अच्छा है तो कोई स्थानीयफाइल सिस्टम का उपयोग कर सकता है। इसके बजाय। यह डेटा को लाइब्रेरी/कैश में सहेजता नहीं है, लेकिन यह ऐप के अस्थायी फ़ोल्डर में डेटा सहेजता है, जो iCloud पर ऑटो बैकअप नहीं है और ऑटो को भी हटाया नहीं जाता है। http: // stackoverflow

सादर राजीव

+0

दिलचस्प .....! –

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