2011-09-27 10 views
6

Bir sayfaya veri yüklemek için daha çok ajax yaklaşımı deniyorum, çoğunlukla geri göndermeleri önlemek için. Bir ajax çağrısı üzerinden sunucu tarafından oluşturulmuş html'yi kolayca elde edebilirim ve dom'a eklemek jQuery'nin ya da .replaceWith'in yardımıyla yeterince basittir. Bu yöntemlerin her ikisi de krom/firefox'ta son derece hızlıdır, ancak çok yavaştır (7,8,9). Benim kod bloktan göreceksinizCPU'yu saklamaksızın büyük miktarlarda HTML nasıl eklenir

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

, ben de olmayan bir jquery yaklaşım kullanmaya teşebbüs ettik. Her iki çizgi de, örn. Yani benim sorum, bir sayfaya büyük miktarlarda html eklemek için en iyi uygulama nedir, yani ezmeyin yani?

+0

responseHtml nedir? Bu aramayı bir kez mi yapıyorsun? Örnek görünümünüz kadar basitse yapabileceğiniz fazla bir şey yok. – BNL

+1

yani ahbap! hızlı o asla olmayacaktır :( –

+0

@BNL responseHtml sunucudan saf bir işarettir.Yalnızca yükleme için istek üzerine gerçekleşir.Bir örnekte, dinamik bir tabloyu filtrelemek için kullanıyorum (şu anda geri gönderimler yoluyla yeniden yüklenir). – Drew

cevap

1

Yapabilirseniz, JSON'u tarayıcıya geri döndürmekten ve jQuery tmpl gibi bir şablon eklentisi kullanmaktan daha iyidir, çünkü tmpl, görüntülemek için HTML'ye eşlemeyi haritaya koyar; çünkü tmpl, daha yavaş tarayıcılarda performansı hızlandıran bazı harika önbelleğe alma işlemleri yapar. IE. Ayrıca JSON yanıt snappier yapar. Örnek:

<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 yanıtı bu şablonu eşleşti şekilde biçimlendirilmiş olması gerekir:

{ text: "Blah!" } 
+0

LOL sadece bir ek adım daha ekler –

+0

Tam olarak değil. Dönen JSON, önbelleğe alınan HTML nesnesinin üstüne veri aktarımını kaydeder, böylece şablon sadece ilk kez kullanıldığında, IE'de bir snappier yanıtı anlamına gelir. – doctorless

+0

@d_r_w Bu yaklaşımı projenin başka bir yerinde kullanıyorum, çünkü burada kullanmama sebebi büyüklükten kaynaklanıyor. JSON döndüren ile sınırlıdır. – Drew

1

Sen .text deneyebilirsiniz() veya .html().

+1

IE'de DOM manipülasyonunun çok daha yavaş olduğunu belirten testler gördüm, belki de bu yöntemi kullanarak değiştirme yapıyor. Bunun yerine, javascript .innerHTML = responseHTML'i denemek hızı artırabilir (önerdiğiniz gibi .text veya .html ile aynı olabilir) – Rodolfo

İlgili konular