2012-02-09 16 views
6

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

जब मैं IE 9 में डेवलपर टूल से नेटवर्क प्रोफाइलर चलाता हूं तो यह प्रतिक्रिया और DomContentLoaded (ईवेंट) के बीच ~ 15 सेकंड का अंतर दिखाता है।

पेज ए जावास्क्रिप्ट के साथ भारी है क्योंकि यह एक्सपस संपादक, एक समृद्ध टेक्स्ट एक्सएमएल संपादक चलाता है।

क्या किसी के पास इस बात का कोई विचार है कि मैं क्या कर सकता हूं या तो क्या होता है या पेज ए को उतारने के लिए मैं क्या कर सकता हूं।

+0

यह भी देखें: http: // stackoverflow।कॉम/प्रश्न/855126 –

+0

सुझाव के लिए धन्यवाद, मैंने जावास्क्रिप्ट की जांच की और कोई कॉल लंबे समय तक नहीं दिखता। यह आईई में कचरा संग्रह या ऐसा कुछ दिखता है। एफएफ और क्रोम जवाब देने में जल्दी हैं। –

+0

क्या यह केवल एक विशिष्ट पृष्ठ बी के साथ होता है? – user123444555621

उत्तर

2

यह एक लंबा शॉट है क्योंकि इसमें ग्यारह सौ चीजें गलत हैं, लेकिन यह कहीं भी शुरू हो सकती है। बहुत पिछले एक के रूप में अपने पृष्ठ के लिए इस स्क्रिप्ट टैग जोड़ें:

<script> 
    function unloadJS() { 
     var scripts = document.getElementsByTagName("SCRIPT"); 
     for (var index = 0; index < scripts.length - 1; index++) 
     { 
     var file = scripts[index].getAttribute("src"); 
     var start = +new Date(); 
     scripts[index].parentNode.replaceChild(document.createElement('script'), 
               scripts[index]); 
     var elapsed = +new Date() - start; 
     alert(file + ": " + elapsed.toString()); 
     } 
     return false; 
    } 
</script> 

इस कोड को समय की राशि उन्हें ड्रॉप करने लगते हैं रिपोर्टिंग, JavaScript फ़ाइलों को उस पृष्ठ पर लोड किया गया में से प्रत्येक के अनलोड मजबूर करने के लिए प्रयास करता है मिलीसेकंड में इस आग के रूप में सुविधाजनक है, जैसे कि, अनलोड पर या एक बटन के साथ:

<button onclick="return unloadJS()">Go!</button> 

यह काम नहीं कर सकते/आपको बता क्या आप को पता है क्योंकि आईई जब स्क्रिप्ट के कट जाने कचरा संग्रहण करने के लिए मना कर दिया सकता है की जरूरत है। ऐसा इसलिए हो सकता है क्योंकि जब आप ऐसा करते हैं तो आईई वास्तव में उन्हें अनलोड नहीं करता है, या सिर्फ इसलिए कि आईई - ठीक है, क्या oddi ने कहा :)

किसी भी घटना में, यह कोई समाधान नहीं है; इससे कोई फर्क नहीं पड़ता कि जेएस अनलोड हो जाने पर, कचरा संग्रह अभी भी उतना ही समय लेता है। यह केवल पहला निदान का प्रयास है, जैसा आपने पूछा था। आशा है कि यह काम करता है/मदद करता है ...

0

शायद तुम PrototypeJS की तरह एक जावास्क्रिप्ट पुस्तकालय है कि पेज unload घटना पर हुक और जब पेज अनलोड, यह एक सरणी सभी डोम तत्वों के लिए सभी घटना श्रोताओं को दूर करने के माध्यम से लूप का उपयोग कर रहे पेज पर। यदि हम जानते हैं कि आप किस लाइब्रेरी का उपयोग कर रहे हैं, तो हम लाइब्रेरी को इसके अनलोड फ़ंक्शन को निष्पादित करने के लिए मजबूर करने के लिए पृष्ठ को अनलोड करने के लिए एक कॉल अनुकरण कर सकते हैं। इसके बाद, एक टाइमर शुरू करें यह देखने के लिए कि किसी अन्य पृष्ठ को लोड करने में कितना समय लगता है।

2

हाँ IE sucks। लेकिन आपके पृष्ठ को प्रोफाइल करने के लिए कई टूल हैं।

Fiddler या HttpWatch आपके अनुरोध समयरेखा का विश्लेषण करने के लिए एक अच्छा उपकरण है और देखें कि क्या आपके सभी भारी जावास्क्रिप्ट कोड को डाउनलोड करने में लंबा समय लगता है। यह अक्सर एक भारी जेएस पेज धीमा करने का मुख्य कारण है। चूंकि IE doesn't take parallel downloading js very well, सैकड़ों छोटी जावास्क्रिप्ट फ़ाइलों के लिए अधिक समय लगता है।

इस मामले के लिए, minifying your javascript आज़माएं। यह आपके पृष्ठ लोड प्रदर्शन को बढ़ाने का सबसे सीधा तरीका है।

यदि यह बहुत मदद नहीं करता है। विस्तृत प्रदर्शन का विश्लेषण करने के लिए आपको YSlow की आवश्यकता हो सकती है। हालांकि यह आईई फिट नहीं करता है, क्रोम या एफएफ के तहत कुछ मुद्दों को ठीक करने से आईई के तहत प्रदर्शन प्रभावित हो सकता है।

अपने कंसोल में कुछ लॉग जोड़ें, दायरे को सीमित करें शायद आप निष्पादन प्रदर्शन समस्या पा सकते हैं।

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