2012-11-05 13 views
15

हम नॉकआउटजेएस का उपयोग करके जटिल उद्यम अनुप्रयोग बनाते हैं और खासकर IE8 में खराब प्रदर्शन का सामना करते हैं। एप्लिकेशन में 1 जीबी से अधिक रैम लग सकता है और कभी भी स्मृति को मुक्त नहीं करता है। जांच के दौरान हमने पाया कि नॉकआउटजेएस डोम नोड्स के संदर्भ रखता है और इसे कभी हटा नहीं देता है। इसे किसी भी सार्वजनिक नॉकआउटजेएस उदाहरण के खिलाफ आईईएसईवी का उपयोग करके पुन: उत्पन्न किया जा सकता है, उदाहरण के साथ खेलते समय डीओएम उपयोग देखें, जो डोम नोड्स को जोड़ता है और हटा देता है।नॉकआउटजेएस आईई 8 प्रदर्शन के मुद्दों और मेमोरी लीक

क्या किसी को भी इस समस्या का सामना करना पड़ा है और इस बारे में कोई विचार है कि इसे कैसे काम किया जाए?

+0

मुझे इस समस्या का सामना नहीं हुआ है। शायद आपके आवेदन के साथ कोई समस्या है। – Tyrsius

+0

भाग्यशाली आप, हालांकि अलग-अलग लोग भी @ knockoutjs फोरम की शिकायत कर रहे हैं। क्या आप आईई 8 के इलाज के लिए कुछ खास करते हैं? –

+3

मैं नॉकआउटज से परिचित नहीं हूं लेकिन मैं आईई-आधारित विकास से परिचित हूं। यदि नॉकआउटज डीओएम का संदर्भ देने वाले जावास्क्रिप्ट क्लोजर का उपयोग कर रहा है, तो इससे खराब प्रदर्शन और मेमोरी लीक के परिणामस्वरूप खतरनाक संदर्भ हो सकते हैं। इन्हें ठीक करने के लिए आपको जावास्क्रिप्ट लाइब्रेरी को संशोधित करने की अधिक संभावना होगी। – Anthill

उत्तर

1

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

मैंने इस तरह की चीज बैकबोनजेस के साथ भी बहुत कुछ किया है। JavascriptMVC स्वयं के बाद सफाई के लिए थोड़ा बेहतर है।

+2

आपने जो उल्लेख किया है वह सच है। मुद्दा इवेंट बाइंडिंग है और कुछ डोम संदर्भ भी ठीक से जारी नहीं किए जा रहे हैं। – ryadavilli

2

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

+0

क्या आप इसे कुछ कोड साझा कर सकते हैं? हम भी कुछ इसी तरह दिख रहे हैं। – Rups

+1

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

+1

पृष्ठ के लिए एक स्क्रॉल हैंडलर जोड़ा गया, जिसमें स्क्रॉल स्थिति और वेब पेज की कुल ऊंचाई के आधार पर, वर्तमान अनुक्रमणिका की गणना करें। अब वीएम को खाली करें और टीएच मास्टर डेटा से जोड़ें, मौजूदा इंडेक्स से मौजूदा इंडेक्स + पेज साइज से शुरू होने वाले रिकॉर्ड। एक उचित स्क्रॉल के भ्रम को देने के लिए पहले प्रस्तुत तत्व से पहले वर्तमान सूचकांक आकार का एक खाली div जोड़ें। उम्मीद है कि यह जानकारी के लिए – ryadavilli