2011-09-27 11 views
6

मैं एक पृष्ठ पर डेटा लोड हो रहा है के लिए एक अधिक ajax दृष्टिकोण के साथ प्रयोग किया गया है, ज्यादातर Postbacks से बचने के लिए गंभीर के बिना आईई करने के लिए HTML की बड़ी मात्रा में जोड़ने के लिए। मैं आसानी से सर्वर-निर्मित एचटीएमएल को अजाक्स कॉल के माध्यम से प्राप्त कर सकता हूं और इसे डोम में जोड़ना jquery's .append या .replaceWith की मदद से काफी आसान है। क्रोम/फ़ायरफ़ॉक्स में ये दोनों विधियां बेहद तेज़ हैं लेकिन अर्थात् (7,8, 9) में बहुत धीमी है।कैसे सीपीयू

$.ajax(
{ 
    url: url, 
    dataType: 'html', 
    cache: false, 
    success: function (responseHtml) 
    { 
      //document.getElementById('targetElementId').outerHTML = responseHtml; 
      $('#targetElementId').replaceWith(responseHtml); 
    } 
}); 

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

+0

प्रतिक्रिया एचटीएमएल क्या है? क्या आप सिर्फ एक बार यह कॉल कर रहे हैं? यदि यह आपके उदाहरण के रूप में सरल है, तो आप ऐसा नहीं कर सकते हैं। – BNL

+1

यानी दोस्त! तेजी से वह कभी नहीं होगा :( –

+0

@BNL responseHtml शुद्ध मार्क अप सर्वर से है। कॉल पर मांग लोड करने के लिए होता है। एक उदाहरण में, मैं एक ऐसी गतिशील तालिका (वर्तमान में Postbacks के माध्यम से पुनः लोड) छानने के लिए यह उपयोग कर रहा हूँ। – Drew

उत्तर

1

यदि आप कर सकते हैं, तो आप ब्राउज़र में जेएसओएन लौटने से बेहतर हैं और एचटीएमएल को जेएससन को प्रदर्शित करने के लिए jQuery tmpl जैसे टेम्पलेट प्लगइन का उपयोग करना बेहतर है, क्योंकि टीएमपीएल कुछ अद्भुत कैशिंग करता है जो धीमे ब्राउज़र में प्रदर्शन को गति देता है अर्थात। यह जेएसओएन प्रतिक्रिया स्नैपियर भी बनाता है। उदाहरण:

<script id="template" type="text/x-jquery-tmpl"> 
    <span class="message">${text}</span> 
</script> 


<script type="text/javascript"> 
    $.ajax(
    { 
     url: url, 
     dataType: 'json', 
     cache: false, 
     success: function (data) 
     { 
      $("#targetElementId").html($("#template").tmpl(data)); 
     } 
    }); 
</script> 

आपका JSON प्रतिक्रिया प्रारूप तैयार किया जाता करने के लिए ऐसी है कि वह टेम्पलेट का मिलान नहीं हुआ की आवश्यकता होगी:

{ text: "Blah!" } 
+0

LOL कि बस एक और अतिरिक्त कदम –

+0

काफी नहीं कहते हैं। रिटर्निंग JSON डेटा ट्रांसफर को सहेजता है, एचटीएमएल पीढ़ी के कैश किए जाने पर शीर्ष पर प्रदर्शन केवल पहली बार टेम्पलेट का उपयोग किया जाता है, जिसका अर्थ है आईई में स्नैपियर प्रतिक्रिया। – doctorless

+0

@d_r_w मैं प्रोजेक्ट में कहीं और इस दृष्टिकोण का उपयोग करता हूं, कारण मैं इसका उपयोग यहां आकार के कारण नहीं करता हूं। JSON लौटने पर तक सीमित है। – Drew

1

आप .text कोशिश कर सकते हैं() या .html()।

+1

मैंने परीक्षणों को देखा है जो आईई में डीओएम हेरफेर का उल्लेख करते हैं, बहुत धीमा है, शायद इस विधि का उपयोग कर प्रतिस्थापन कर रहा है। इसके बजाय, जावास्क्रिप्ट को आजमाएं .innerHTML = प्रतिक्रिया HTML गति में सुधार कर सकता है (जो आपके द्वारा सुझाए गए .text या .html का उपयोग करने जैसा ही हो सकता है) – Rodolfo

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