2011-01-13 111 views
0

我有一個網頁與ajax。 Ajax需要從其他網站加載一些數據,這需要一些時間。在「加載」時間內,我的網站對用戶輸入的反應不佳(轉到其他頁面等)。之前有人喊 - 是的,我知道,這是因爲阿賈克斯。 :)ajax放慢頁面

我的問題是 - 有什麼辦法來限制阿賈克斯帶寬?快速網站是我的首選,後臺加載數據是次要的。因此,如果我有一個調用PHP(Ajax)的JavaScript,然後PHP使用cUrl獲取一些數據並將其返回給JavaScript(實際代碼是很長的時間來發布它在這裏,沒有人會肯定讀它:D)有沒有辦法阻止這種機制阻止我的頁面,直到完成?

回答

1

的問題是什麼拖慢你的網頁?這可能來自yoyur描述的幾件事情。

一對夫婦的事情要牢記使用Ajax:

1:大多數瀏覽器只會做每一個域中的兩個XHR請求在同一時間

2:如果呼叫XHR的結果需要被解析和解析是沉重的,就像在舊瀏覽器中評估json一樣,當瀏覽器發生數據解析時(js本質上是單線程的,除非您在html5中計算web工作者),它可能會對瀏覽器產生凍結效果

3:如果ajax的結果強制瀏覽器由於dom注入而重新渲染頁面,則渲染可能感覺緩慢且凍結瀏覽器在舊瀏覽器中有點兒。

4:如果你有帶寬的限制,試着運行XHR時,當瀏覽器與其他的東西進行,例如,等待domready中的頁面加載

0

尋找JavaScript源文件的異步加載,我希望你已經使用異步XHR調用。見例如使用谷歌Analytics跟蹤文檔:

<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

好,我使用的異步GET(如果這就是你正在思考)ajax.open(「GET」,「http ...」,true); – johan 2011-01-13 02:11:45

+0

以及有問題的JavaScript不會在「head」中調用,它在調用前定義 - 在頁面 – johan 2011-01-13 02:13:32