2012-07-10 18 views
6

मैं एक एकल पृष्ठ एप्लिकेशन लिख रहा हूं। जब पृष्ठ प्रारंभ में परोसा जाता है, इसमें कई डीओएम तत्व होते हैं जिनमें जेसन स्ट्रिंग होते हैं जिन्हें मैं पृष्ठ में इंजेक्शन दे रहा हूं।प्रदर्शन के लिए अप्रयुक्त DOM तत्वों को हटा रहा है

जब पृष्ठ क्लाइंट पर लोड होता है, तो पहली बात यह होती है कि इन डीओएम तत्वों को जेसन से जावास्क्रिप्ट ऑब्जेक्ट्स में पार्स किया जाता है और फिर उनका उपयोग कभी नहीं किया जाता है।

क्या उन्हें डीओएम से हटाने और इसके आकार को कम करने में प्रदर्शन लाभ होगा? मुझे इस पहलू के बारे में कोई निर्णायक डेटा नहीं मिला है। जानकारी के लिए, ये तत्व आकार में लगभग 500K हैं।

आपके सुझावों के लिए धन्यवाद।

+1

आप कुछ परीक्षण मामले स्थापित कर सकते हैं और समय परीक्षण कर सकते हैं। – TheZ

+0

वे कौन से तत्व हैं? अगर वे शरीर में नहीं हैं, तो शायद उन्हें हटाने के लिए वास्तव में आवश्यक नहीं हो सकता है - एक बार डोम पार्स हो जाने पर, इसे पार्स किया जाता है। – Dancrumb

+0

मेरे पास एक समान मामला है जहां मैं HTML को अस्थायी पॉपअप या टूलटिप्स के लिए डीओएम में रखता हूं। उन्हें साफ करने के लिए फायदेमंद है? – Halcyon

उत्तर

1

कि क्या आप डोम से JSON खींच के स्वतंत्र, आप अपने JSON ऑब्जेक्ट सहित के लिए इस तकनीक पर विचार हो सकता:

<script type='text/json' id='whatever'> 
    { "some": "json" } 
</script> 

ब्राउज़र पूरी तरह से एम्बेडेड तार के लिए उन स्क्रिप्ट की सामग्री (बेशक को छोड़कर अनदेखी करेंगे कि </script> की तरह दिखें, जो मेरे लिए ऐसा होता है क्योंकि जेएसओएन सीरियलाइज़र किसी भी तरह से निपटना चाहता है), इसलिए आपको एम्बेडेड एम्परसैंड और चीजों के साथ प्रॉपम्स में दौड़ने का जोखिम नहीं है। यह शायद अपने आप में एक प्रदर्शन जीत है: ब्राउजर के पास <script> ब्लॉक के अंत की तलाश में एक आसान समय है, जो कि वास्तविक सामग्री है, जो सामानों को देखता है। आप .innerHTML के साथ सामग्री verbatim प्राप्त कर सकते हैं।

+0

शायद सिर्फ अर्थशास्त्र, लेकिन आपको 'आंतरिक HTML' की बजाय 'टेक्स्ट' प्रॉपर्टी की अनुशंसा करनी चाहिए क्योंकि स्क्रिप्ट तत्वों में मार्कअप नहीं है। ;-) – RobG

+0

@RobG मैं सहमत हूं लेकिन मुझे यकीन नहीं है कि सभी ब्राउज़रों में काम करता है। ये हो सकता है। – Pointy

4

क्या उन्हें DOM से हटाने और उसके आकार को कम करने में प्रदर्शन लाभ होगा?

डीओएम के प्रदर्शन के संदर्भ में, आम तौर पर, जितना कम आप अपने डोम के साथ बातचीत करते हैं उतना ही बेहतर।

याद रखें कि आपके चयनकर्ता डोम को पार करते हैं, इसलिए यदि आप अक्षम चयनकर्ताओं का उपयोग करते हैं, तो इससे कोई फर्क नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता, लेकिन यदि आप जहां भी संभव हो कक्षा या विशेषता के बजाय आईडी द्वारा तत्वों का चयन कर रहे हैं, तो आप अच्छे प्रदर्शन को निचोड़ सकते हैं पृष्ठ के बाहर, भले ही आपने उन बाहरी मार्कअप आइटम को हटा दिया हो।

जब पेज शुरू में पेश किया जाता है, यह कई डोम तत्वों कि json तार कि मैं पेज में इंजेक्शन लगाने कर रहा हूँ .... जानकारी के लिए शामिल होता है, इन elemnts आकार में 500K के बारे में कर रहे हैं।

पृष्ठ लोड के संदर्भ में, आपका प्रदर्शन पहले से ही उस डेटा को स्थानांतरित करने से पीड़ित है। यदि आप केवल जेसन को स्थानांतरित करने का कोई तरीका ढूंढ सकते हैं, तो यह केवल मदद कर सकता है। तथ्य के बाद हटाना इस विशेष समस्या को हल नहीं करेगा, हालांकि।

+0

+1 "जेसन को अलग से स्थानांतरित करें" – Bergi

+0

ठीक है, आपकी अंतर्दृष्टि के लिए उल्टा। मैंने जेसन स्ट्रिंग को सिर में