2012-06-14 17 views
5

Me gustaría pedirle que encuentre el punto, por qué el sitio -en el que estoy trabajando- es lento.¿Cómo es posible que ajaxing sea mucho más lento en Chrome e IE que en Mozilla?

las condiciones del problema:

  • gran número de filas (. Así que creo que tal vez el problema está relacionado con este)
  • hay ajaxing evento (Me he cansado de comentar hacia fuera y el problema desaparecieron)
  • usando Mozilla no (este efecto congelación aparecen en el IE y Chrome)

descripción del problema (ver la imagen):

  • I cambiar el valor de entrada
  • después hay una llamada ajax (con el fin de calcular premio) y se tarda en FF unos 30 ms de otro modo más de 1 s
  • hay una congelación hasta el Ajax terminó (pero Ajax no está establecido en asíncrono: falso)
  • sólo después de que se puede cambiar la siguiente entrada

me tienen cansado para reproducir el error, pero podría't. Así que ver el sitio original:

sitio: foto/fotokidolgozas/elohivas-beallitasok.php

Acceder y pasar: [email protected]

actualización: Funciona ahora bien, el truco es el siguiente:

Uso los campos de entrada ocultos, sus valores son cadenas json_encode-d. Puedo procesarlos en cualquier momento con js.

enter image description here

Gracias por cualquier ayuda!

Código:

$('#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

Publique el código correspondiente en la pregunta. –

+0

No tengo diferencias entre FF14b, IE9, Chrome19 en mi sistema. Tiempo de ejecución de la solicitud (desde pestañas de Red en DevTools) y visualmente - todos iguales. –

+0

Tengo el mismo problema con uno de mis scripts, usando Comet con Ajax: un agente de Chrome está congelado, y otro (fuera de la caja) no lo está. –

Respuesta

1

El problema fue que los datos ocultos era demasiado grande (see my other question), y disminuyó el tiempo de procesamiento. (Firefox parece estar bien codificado, porque esto no importa)

Ahora el problema está solucionado.

Cuestiones relacionadas