2011-01-13 3 views
0

나는 ajax가있는 웹 페이지가 있습니다. Ajax는 다른 웹 사이트에서 일부 데이터를로드해야하는데 어느 정도 시간이 걸립니다. 그 "로드"시간 동안 내 사이트가 사용자 입력에 잘 응답하지 않습니다 (다른 페이지로 이동하는 등). 누군가 소리 치기 전에 - 예, 알고 있습니다. 아약스 때문입니다. :)ajax slowing down page

내 질문은 - 아약스 대역폭을 제한 할 수있는 방법이 있습니까? 배경에있는 데이터를로드하는 것이 이차적 인 빠른 웹 사이트가 내 우선 순위입니다.

php (아약스)를 호출하는 javascript가있는 경우, 그리고 나서 cUrl을 사용하는 PHP는 일부 데이터를 가져 와서 자바 스크립트로 반환합니다 (실제 코드는 여기에 게시 할 때까지 아무도 그것을 확실히 읽지 않습니다). : D) 그것이 완료 될 때까지 그 메커니즘이 내 페이지를 차단하지 못하도록하는 어떤 방법이 있습니까?

답변

1

문제는 페이지를 늦추고있는 것이다 : 예를 들어, 사용에 대한 Google 웹 로그 분석 추적 설명서를 참조하십시오? 그것은 yoyur 묘사에서 여러 가지 일 수 있습니다.

몇 가지 아약스와 함께 명심하십시오 :

1 : 대부분의 브라우저 만 할 것 같은 시간

2에서 도메인 당이 개 XHR 요청 : 통화 XHR의 결과가 필요한 경우 구문 분석되고 오래된 브라우저에서 json을 평가하는 것과 같이 구문 분석이 무거울 경우 데이터 구문 분석이 진행되는 동안 브라우저에서 멈춤 효과가 발생할 수 있습니다 (js는 HTML5에서 웹 작업자를 계산하지 않는 한 자연스럽게 단일 스레드입니다).

3 : 아약스 결과로 DOM 주입으로 인해 브라우저가 페이지를 다시 렌더링하게되면 렌더링이 느려지고 멈출 수 있습니다 오래된 브라우저의 브라우저.

4 : 당신은 대역폭 제한이있는 경우, 브라우저는 예를 들어, 다른 물건으로 완료되면, 당신의 XHR이 실행하려고 pageload 잘

+0

페이지 하단에 있습니다. :) 단 하나의 xhr,하지만 PHP 결과를 구문 분석하고 json_encode 및 javascript를 사용하여 그 결과를 아약스 보내기보다 innerHtml-s div 결과 : 페이지가 프리즈되지 않지만 다른 페이지를 열려면 영원히 걸립니다 (사용자가 링크를 클릭 한 후) – johan

+0

좋아, 이것에 관해서는 다른 것이 필요합니까? –

0

자바 스크립트 소스 파일의 비동기 로딩을 찾으십시오. 비동기식 XHR 호출을 사용하고 있기를 바랍니다.

<script type="text/javascript"> (function() { 
    var ga = document.createElement('script');  
    ga.type = 'text/javascript'; 
    ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' 
      : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s); 
    })(); 
    </script> 

http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html

+0

에 domReady 대기, 즉 당신이 무엇을 만약 내가 (비동기 GET을 사용하고 있습니다 생각하고있다) ajax.open ("GET", "http ...", true); – johan

+0

또한 문제가되는 javascript는 "head"에서 호출되지 않습니다. 호출하기 바로 전에 정의되어 있습니다. – johan