2013-04-10 5 views
5

पर ऐप कैश बेहद धीमा है, मैं एप्लिकेशन कैश का उपयोग कर एक वेब-ऐप विकसित कर रहा हूं, और सब कुछ डेस्कटॉप ब्राउज़र और एंड्रॉइड पर भी बहुत अच्छा काम कर रहा है (यहां तक ​​कि बहुत पुराना & धीमी एंड्रॉइड हैंडसेट)। हालांकि एपकेच डाउनलोड करना सफारी और क्रोम दोनों में आईओएस 6 पर काफी अधिक समय ले रहा है।आईओएस

मेरा आवेदन कैश कुल आकार केवल 2.1 एमबी है, और मेरे पास एक ठोस ठोस 70 एमबीपीएस (डाउनलोड) इंटरनेट कनेक्शन है। मैं कैशिंग को बहुत तेज होने की उम्मीद करूंगा।

यहाँ मेरी बार अब तक कर रहे हैं:

  • डेस्कटॉप क्रोम: < 1s(सफारी & के लिए इसी तरह बार फ़ायरफ़ॉक्स)
  • एंड्रॉयड 2.3.3 स्टॉक ब्राउज़र: ~ 4s(क्रोम & डॉल्फिन के लिए इसी तरह के समय)
  • एंड्रॉइड 4.2.2 (नकली): ~ 7s (फोनगैप ऐप के अंदर चल रहा है)
  • आईफोन 4 एस 6.0 सफारी: 8 मिनट !!! (आईओएस क्रोम में भी इसके आसपास !!)
  • आईपैड 2 6.0 सफारी: ऊपर के रूप में !!!

इन उपकरणों के सभी एक ही वाईफाई और इंटरनेट कनेक्शन का उपयोग कर रहे हैं, और मेरे iPhone/iPad अन्यथा ठीक से कार्य कर रहे (इंटरनेट गति मुद्दों का प्रदर्शन कोई मूल एप्लिकेशन और नियमित रूप से वेबसाइटों लोड ठीक)। ऐसा लगता है कि आईओएस के तहत एप कैश डाउनलोड की गति पूरी तरह से खत्म हो रही है।

window.applicationCache.status इस समय के दौरान appCache.DOWNLOADING है, और मैं एक progress घटना फ़ाइलों के रूप में वे डाउनलोड कर रहे हैं गिनती चल रहा है, इसलिए मुझे विश्वास है कि इसे कहीं अटक नहीं है हूँ। ऐसा लगता है कि यह डाउनलोड करने में लगने वाला समय लगता है। क्या देता है?

Addendum: आईफोन भी हास्यास्पद रूप से गर्म चलाता है, और बैटरी इस ऑपरेशन के दौरान बहुत तेज़ी से नीचे आती है। ऐसा लगता है कि कुछ इस डाउनलोड के दौरान सीपीयू को फ्लैट-आउट चलाने का कारण बन रहा है।

(नोट: मैं यहाँ हम अभी भी निजी बीटा में हैं के रूप में वेब एप्लिकेशन का लिंक प्रकाशित नहीं कर सकते, लेकिन आप इसे देखने के लिए इससे पहले कि आपको लगता है कि आप इसे निदान करने में मदद करने में सक्षम हो जाएगा की आवश्यकता होगी, तो, मुझे अपनी प्रोफाइल में पते पर ईमेल करें और मैं ऐप को एक लिंक भेजूंगा)।

+2

शुरू करने के लिए, उस पर एक टीसीपी स्निफर को फेंक दें (जैसे [वायर्सहार्क] (http://www.wireshark.org/)) यह जानने के लिए कि डिवाइस/सर्वर के बीच बातचीत 8 मिनट की अवधि के दौरान कैसा दिखता है । –

उत्तर

2

ठीक है, मैंने इसे आईओएस एमुलेटर की मदद से और एक्सकोड इंस्ट्रूमेंट्स को प्रोफाइल करने के लिए इसे समझ लिया। (मुझे यकीन नहीं है कि मुझे अपना समाधान मुख्य प्रश्न में, या एक उत्तर के रूप में जोड़ना चाहिए, लेकिन मैंने सोचा कि मैं ऐसा करूँगा क्योंकि मेरा प्रश्न पहले से ही थोड़ा उलझन में है)।

जैसा कि यह पता चला है, वास्तव में यह समस्या के कारण कुछ गलत जावास्क्रिप्ट था, लेकिन जाहिर है केवल आईओएस पर।

वेब-ऐप का उद्देश्य केवल एक पृष्ठ उच्च (कोई लंबवत स्क्रॉलिंग नहीं है, विशिष्ट DIV एस के अलावा), इसलिए पता बार को छिपाने के लिए सामान्य मानक जेएस कोड के अतिरिक्त ...

 window.addEventListener("load",function() { 
      // Set a timeout... 
      setTimeout(function(){ 
       // Hide the address bar! 
       window.scrollTo(0, 1); 
      }, 0); 
     }); 

... मैं भी निम्न में जोड़ा था: प्रोफ़ाइल परिणामों को देखने का से

 $(document).scroll(
      function(e){ 
       window.scrollTo(0, 1); 
      }); 

, मैं देखना है कि समय की एक बहुतscrollTo में खर्च किया जा रहा था पा रहा था, इसलिए यह तुरंत कारण के रूप में इंगित किया। क्यों scroll घटना इतनी अधिक ट्रिगर की जा रही थी, मुझे नहीं पता (यह स्क्रीन के छूने के साथ नहीं हो रहा था)।

मेरा प्रारंभिक फ़िक्स उस कोड को थ्रॉटल करना है, लेकिन अब मैं मूल्यांकन कर रहा हूं कि मुझे इसकी आवश्यकता भी है या नहीं।

 $(document).scroll(
      $.throttle(function(e){ 
       window.scrollTo(0, 1); 
      }) 
     , 10); 

एप्लिकेशन संचय के डाउनलोड समय एंड्रॉयड समय के साथ लाइन में है: यहाँ कोड मैं कि अब यह (jquery-debounce का उपयोग, जो मैं पहले से ही कुछ और के लिए उपयोग कर रहा था) के लिए ठीक करता है। ओह!

0

कोड अपने आप को अनंत लूप में प्राप्त कर रहा है, प्रारंभिक स्क्रॉल के रूप में फ़ंक्शन कॉल स्क्रॉल ईवेंट हैंडलर को ट्रिगर करता है, जो फिर बार-बार फिर से ट्रिगर करता है! मेरा सबसे अच्छा अनुमान यह है कि आईओएस जावास्क्रिप्ट इंजन इस अनंत लूप को अन्य ब्राउज़रों के जावास्क्रिप्ट इंजनों के लिए अलग-अलग संभालता है।