2014-12-02 2 views
2

웹 서버에서 XML 파일을 요청하는 작은 웹 페이지가 있습니다. 웹 서버는이 파일을 웹 페이지에 표시 할 새 데이터로 2 초마다 업데이트합니다.반복 AJAX가 느린 브라우저를 요청합니다.

페이지를 잠시 실행 한 후에는 서버에서 새 데이터를 가져올 때마다 브라우저가 느려집니다 (초당 두 번). 문제는 간헐적입니다 - 때로는 몇 초간 지속되며 때로는 오래 지속되는 경우도 있습니다.

Firefox에 문제가 있습니다.

function getData() { 
    var dataVal = parseFloat($("#data").html().substring(0, 100)); 
    doSomethingWithVal(XTEval); // seemingly irrelevant, as it lags without this function too 
} 

t = 0.5; 

function process_xml() { 
    var xmlhttp = GetXmlHttpObject(); 

    if (xmlhttp === null) { 
    alert("Your browser does not support AJAX!"); 
    return; 
    } 

    xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState === 4) { 
     document.getElementById("data").innerHTML = xmlhttp.responseText; 
     getData(); 
     setTimeout('process_xml()', t * 1000); // moved from end of function to here based on a suggestion 
    } 
    }; 
    xmlhttp.open("GET", "data.shtml", true); 
    xmlhttp.send(""); 
} 

function GetXmlHttpObject() { 
    if (window.XMLHttpRequest) 
    return new XMLHttpRequest(); 
    if (window.ActiveXObject) 
    return new ActiveXObject("Microsoft.XMLHTTP"); 
    return null; 
} 

data.shtml 단순히 포함

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<!--#echo var="someVal.val" --> 

아마도 AJAX를 사용하는 것보다 다른/더 나은 방법이있다?

+2

그 함수에서 "xmlhttp"변수를'var'으로 선언하는 것이 좋습니다. 그것 없이는 전역 변수이고, "process_xml"에 대한 연속적인 호출은 이전 값을 덮어 씁니다. – Pointy

+0

감사합니다! 나는 그 사실을 모르고 그 변화를 만들었습니다. 나는이 코드를 상속했고 천천히 그것을 업데이트했다. –

+1

나는 getData가 귀하의 코드에없고 getXTE가 process_xml에서 호출되지 않는다는 것이 맞습니까? 이 문제를 확인하거나 문제를 해결할 수 있습니까 (XTEVal 및 dataVal 수정 포함) – rene

답변

1

나는 이것이 문제라는 것을 알지 못하지만, 서버 왕복 및 구문 분석 외에 다른 모든 작업 (예 : process_xml)이 500ms 이상 걸릴 경우 몇 가지 요청이있을 것입니다 (동시에 브라우저를 처리 할 수있는 사람의 수에 제한이 있습니다) 동시에 파이프가 막히게됩니다. onreadystatechanged 처리기에서 setTimeout으로 전화하는 것이 더 낫습니다. 처리 된 모든 작업이 완료된 것입니다.

+0

나는 변화를 만들었지 만 시가는 없다. 1 분 정도 달리면 여전히 느려집니다. –

+0

FireFox 또는 모든 브라우저에서만이 문제가 발생합니까? – Paul

+0

Chrome이 영향을받지 않는 것 같습니다. 문제가 산발적이기 때문에 확실하게 알기는 어렵습니다. –

관련 문제