2013-02-14 61 views
6

मैं विशेष रूप से आईपैड (आईओएस 6+ चला रहा हूं) के लिए एक वेब ऐप बना रहा हूं जो एक कंपनी के उत्पाद संग्रह को दिखाता है।आईओएस 6 वेब ऐप्स के लिए अधिकतम कैश आकार क्या है और मैं इसे कैसे बढ़ा सकता हूं?

यह सब HTML5 की "cache.manifest" फ़ाइल का उपयोग करके पूरी तरह से काम किया। लेकिन चूंकि कैश लगभग 50 एमबी तक बढ़ गया है, इसलिए आईपैड अब एप्लिकेशन डेटा को सहेज नहीं रहा है। सफारी सेटिंग्स के अनुसार 50 एमबी के बजाय कैश आकार अब 0.1 केबी है।

तो वेब ऐप के लिए सफारी के कैश की वास्तविक सीमा क्या है और क्या एप्लिकेशन कैश के लिए अधिकतम राशि बढ़ाने का कोई तरीका है?

+0

चेक इस बाहर: http://stackoverflow.com/questions/2772908/max-size-ipad-iphone-offline-application-cache – mattdlockyer

उत्तर

12

2 जून 2014 संपादित करें: आईओएस 7.1 पर अधिकतम कैश आकार 300 एमबी है।

एक ग्राहक ने मुझे हाल ही में यह सटीक प्रश्न पूछा, इसलिए मैंने जांच की।

IOS6 के अनुसार, इन दो अलग बातें हैं (मेरे सभी परीक्षणों iOS6.1 पर किया गया है):

  • एक वेबसाइट एक .manifest का उपयोग कर, मोबाइल सफारी
  • के साथ पहुँचा होम स्क्रीन पर एक वेबपैप, वेबसाइट

उपयोगकर्ता की अनुमति के साथ .manifest के साथ एक वेबसाइट 50 एमबी कैश का उपयोग कर सकती है। यह और अधिक उपयोग नहीं कर सकता है। यह मान सेटिंग/सफारी/उन्नत में पाया और साफ़ किया जा सकता है। यदि आप कैश में अधिक सामान लगाने का प्रयास करते हैं, तो error ईवेंट आग होगी और window.applicationCache.status आईडीएलई जाएगा।

एक वेबएप अपनी वेबसाइट की तुलना में एक ही कैश साझा नहीं करता है। कैश सेटिंग्स/सफारी/उन्नत साफ़ करने से आपके लिए होम स्क्रीन वेबैप कुछ भी नहीं होगा। यह उपयोगकर्ता इनपुट के बिना 50 एमबी से अधिक कैश स्वीकार करेगा, लेकिन मुझे बिल्कुल पता नहीं है कि मैंने सफलता के साथ 60 एमबी के साथ परीक्षण किया, पूरी तरह से सुलभ ऑफ़लाइन। * संपादित करें: 83 एमबी, सफलता के साथ प्रयास किया गया) मुझे नहीं पता कि यह कहां है आईओएस सेटिंग्स में डेटा देखा जा सकता है। मुझे कहीं नहीं लगता है।

परीक्षण करना *** में दर्द था जब तक मुझे spec नहीं मिला। एक एपीआई है जो आईओएस 6 पर पूरी तरह से काम करती है।
आप window.applicationCache.status की जाँच करनी चाहिए, जिससे आपको पता चलता एप्लिकेशन राज्य है, और निम्न इवेंट (कटौती और उनके श्रोता के साथ अपने कोड से पेस्ट, तो) क्या:

window.applicationCache.addEventListener('checking', onChecking); 
window.applicationCache.addEventListener('noupdate', onNoupdate); 
window.applicationCache.addEventListener('downloading', onDownloading); 
window.applicationCache.addEventListener('progress', onProgress); 
window.applicationCache.addEventListener('cached', onCached); 
window.applicationCache.addEventListener('updateready', onUpdateready);  
window.applicationCache.addEventListener('obsolete', onObsolete); 
window.applicationCache.addEventListener('error', onError); 

सभी progress आईओएस 6.1 पर काम कर रहे हैं, भले event.loaded और event.total

एक वेबपैप जांच करके शुरू होता है, तो noupdate को आग लगती है यदि .manifest समान है। स्थिति IDLE है।

तो .manifest बदल गया है, स्थिति DOWNLOADING है, अपने मेनिफ़ेस्ट में प्रत्येक फ़ाइल के लिए progress घटना की आग, तो स्थिति UPDATEREADY और updateready आग है।

यदि आप ऑफ़लाइन हैं, तो error ईवेंट आग और स्थिति IDLE है।

आप के साथ

var online = navigator.onLine ? 'online' : 'offline'; 

यह काम करता है लेकिन चश्मा यह अविश्वसनीय है कहते हैं ऑनलाइन/ऑफ़लाइन स्थिति का परीक्षण कर सकते हैं।

तीन और चीजों को खत्म करने के लिए:

  • मेरी प्रकट cache.manifest नामित और इस <html manifest="cache.manifest">
  • की तरह घोषित किया जाता है मेरी .htaccess है AddType text/cache-manifest manifest और ExpiresByType text/cache-manifest "access plus 0 seconds"
  • मेरे ऐप <meta name="apple-mobile-web-app-capable" content="yes">
है

इस एपीआई के साथ, यह समझना आसान है कि हुड के नीचे क्या चल रहा है। हालांकि, अपने स्वयं के परीक्षण करना सुनिश्चित करें, मैं इस परिणामों के 100% निश्चित नहीं हूं या वे एक नए आईओएस संस्करण के साथ कर सकते हैं। मैं अधिकतम आकार के लिए आगे परीक्षण करूंगा।

+0

स्पष्ट विवरण के लिए धन्यवाद! मैं आज या कल बाद में इसे आजमाने की कोशिश कर रहा हूं। – Jules

+0

ऐसा लगता है कि वेब एप्लिकेशन (जब यह होम स्क्रीन में है) केवल दूसरी बार कैशिंग है। पहली बार त्रुटि घटना को निकाल दिया गया, दूसरी बार कैश किए गए कार्यक्रम को सफलतापूर्वक निकाल दिया गया! आपकी सहायता के लिए धन्यवाद. – Jules