2012-06-14 4 views
5

나는 사이트에서 왜 내가 일하고 있는지, 그 점을 찾으라는 질문을하고 싶습니다. 느립니다. 문제의Chrome과 IE에서 ajaxing이 Mozilla보다 훨씬 느린 이유는 무엇입니까?

조건 :

  • 큰 행 수는 (. 그래서 문제가이 관련되어 어쩌면 생각)
  • 이벤트를 ajaxing있다 (나는 그것을 주석 피곤 가지고 문제 하지 모질라 (이 동결 효과를 사용하여
  • 는 IE와 크롬) 문제의

설명 (이미지 참조)에 나타납니다) 사라 :

  • 는 I 입력 값을 변경
  • 은 약 30 밀리 달리 FF 걸린하여 Ajax (상을 계산하기 위해) 호출과 이 후 이상 1의 동결까지가
  • 아약스 완료 (그러나 아약스는 비동기로 설정되지 않은 : false)를 해당 후
  • 내가

내가 오류를 재현 피곤이 다음 입력을 변경할 수 있습니다,하지만 난 could't. 에 사진/fotokidolgozas/elohivas-beallitasok.php

로그 및 통과 :

사이트 : 그래서 원래의 사이트를 참조 [email protected]

업데이트 : 그것은 지금 작동 괜찮아요, 트릭은 다음과 같습니다 :

나는 숨겨진 입력 필드를 사용합니다. 그 값은 json_encode-d 문자열입니다. js로 언제든지 처리 할 수 ​​있습니다. enter image description here

어떤 도움 주셔서 감사합니다!

번호 :

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

질문에 관련 코드를 게시하십시오. –

+0

필자의 시스템에는 FF14b, IE9, Chrome19의 차이점이 없습니다. 요청 실행 시간 (DevTools의 네트워크 탭에서) 및 시각적으로 - 모두 동일합니다. –

+0

나는 Ajax와 함께 Comet을 사용하여 스크립트 중 하나에서 동일한 문제를 겪고있다. 하나는 Chrome 에이전트가 멈추고 다른 하나는 (기본값) 그렇지 않다. –

답변

1

문제 숨겨진 데이터 (see my other question)가 너무 큰 것을이고, 그 처리 시간을 감소시켰다. (파이어 폭스가 잘 코딩 된 것 같습니다.)

이제 문제가 해결되었습니다.

관련 문제