2012-06-14 14 views
5

Chciałbym prosić, abyś znalazł punkt, dlaczego strona, nad którą pracuję, jest wolna.Jak to jest możliwe, że ajaxing jest znacznie wolniejszy w Chrome i IE niż Mozilla?

warunki problemu:

  • duża liczba wierszy (. Więc myślę, że być może problem jest związany z tym)
  • jest ajaxing zdarzenie (mam zmęczony, aby skomentować to i problem zniknął)
  • używając Mozilla (nie ten efekt zamrożenia pojawiają się w IE i Chrome)

opis problemu (patrz zdjęcie):

  • zmienić wartość wejścia
  • gdy istnieje połączenie AJAX (w celu obliczenia nagroda) i trwa w FF około 30 ms w przeciwnym razie więcej niż 1 s
  • jest zamrożenie, aż zakończył ajax (ale ajax nie jest ustawiony na async: false)
  • dopiero potem mogę zmienić następnego wejścia

mam zmęczony, aby odtworzyć błąd, ale could't. Więc zobaczyć oryginalną stronę:

strony: foto/fotokidolgozas/elohivas-beallitasok.php

zalogować się i przejść: [email protected]

Aktualizacja: Działa teraz w porządku, sztuczka jest następująca:

Używam ukrytych pól wejściowych, ich wartości to ciągi json_encode-d. Mogę je przetworzyć w dowolnym momencie za pomocą js.

enter image description here

Dziękuję za wszelką pomoc!

Kod:

$('#cikkek,#magic_bar').on("change","select,textarea,input[type!=hidden]",function(event_object){ 
    if($(this).attr('name') == "kijelolve" && !$(this).parents('#magic_bar').length)return true; 

    var cikk_id = $(this).parents('.cikk').attr('id'); 
    var cikk_tipus = $("input[name=cikk_tipus]").val(); 
    var tulajdonsag = $(this).attr('name');  
    var ertek = $(this).val(); 
    if(ertek == "-1")return false;  
    if($(this).is('[type=checkbox]'))ertek = $(this).prop("checked")?'1':'0'; 

    if(cikk_tipus=='fotokidolgozas' && (tulajdonsag=='meret'||tulajdonsag=='vagas')) 
     { 
      var sor = $(event_object.target).parents('.cikk'); 
      var act_meret = sor.find('select[name=meret]').val(); 
      var act_fill = sor.find('select[name=vagas]').val(); 
      var act_zold_class = sor.find("input[name=zold_"+act_meret+"]").val()=="1" ?"zold":"feher" ; 
      var name = "src_"+act_meret+"_"+act_fill;     
      var name2 = "szoveges_uzenet_"+act_meret+"_"+act_fill;     
      sor.find(".img_cont").find("img").attr("src",sor.find("input[name="+name+"]").val()); 
      sor.find(".szoveges_uzenet").text(sor.find("input[name="+name2+"]").val()); 
      sor.find(".dpi_megfelel").text(sor.find("input[name=minoseg_"+act_meret+"]").val()+" ("+sor.find("input[name=dpi_"+act_meret+"]").val()+" dpi)"); 
      sor.find("select[name=meret]").removeClass("feher zold").addClass(act_zold_class); 
     } 

    var before = now(); 

    //this is the ajax part 
    if(ajax_modositaskor) 
    $.post('/_fn/cikk/mod.php',{ 
     'cikk_tipus':cikk_tipus, 
     'cikk_id':cikk_id, 
     'tulajdonsag':tulajdonsag, 
     'ertek':ertek 
     },function(a){ 
      var elapsed = now() - before; 
      if(a[0]!="1") 
      { 
       //error 
       alert(a[0]); 
       return; 
      } 
      if(a[1]!="-1") 
      { 
       //there is new price 
       $(event_object.target).parents('.cikk').find('.ar').text(a[1]);  
      } 
      if(a[2]!="-1")$('#cikkek_ara').text(a[2]); 
      osszegzest_frissit(a[3]);    
      var php_time = Math.round(a[4]) 
      a_min = Math.min(a_min,elapsed); 
      p_min = Math.min(p_min,parseFloat(php_time)); 
      a_max = Math.max(a_max,elapsed); 
      p_max = Math.max(p_max,parseFloat(php_time)); 
      if(!a_avg)a_avg = elapsed;else a_avg= Math.round((a_avg+elapsed)/2); 
      if(!p_avg)p_avg = php_time;else p_avg = Math.round((p_avg+php_time)/2);    
      trace("ajax="+elapsed+"\tphp="+php_time+"\tajax_min="+a_min+"\tphp_min="+p_min+"\tajax_max="+a_max+" \tphp_max="+p_max+"\tajax_avg="+a_avg+" \tphp_avg="+p_avg);     

     },"json").error(function() { postHiba() }); 


}); 
+2

Opublikuj odpowiedni kod w pytaniu. –

+0

Nie mam różnicy między FF14b, IE9, Chrome19 w moim systemie. Czas wykonania żądania (z kart Network w DevTools) i wizualnie - wszystko jest równe. –

+0

Mam ten sam problem z jednym z moich skryptów, używając Komety z Ajaxem: jeden agent Chrome jest zamrożony, a inny (po wyjęciu z pudełka) nie. –

Odpowiedz

1

Problem polegał na tym, że ukryte dane było zbyt duże (see my other question), a zmniejszył się czas przetwarzania. (Wydaje się, że Firefox jest dobrze zakodowany, ponieważ nie ma to znaczenia)

Problem został rozwiązany.

Powiązane problemy