2011-01-13 7 views
0

私はajaxでウェブページを持っています。 Ajaxは他のWebサイトからデータをロードする必要があり、時間がかかります。その "ロード"時間中、私のサイトはユーザー入力にうまく反応しません(他のページなどに行く)。誰かが叫ぶ前に - はい、私は知っています、それはアヤックスのためです。 :)ajax slowing down page

私の質問は - どのようにajaxの帯域幅を制限する方法はありますか?高速のウェブサイトが私の優先事項であり、バックグラウンドでのデータの読み込みは二次的なものです。

php(ajax)を呼び出すjavascriptを使用していて、cUrlを使用してPHPがデータを取得し、javascriptに戻す場合(実際のコードはここに投稿するのは間違いありません。 :D)それが完了するまで、そのメカニズムが私のページをブロックするのを防止する方法はありますか?

答えて

1

質問があなたのページを減速されたものである:使用例のためのGoogle Analyticsのトラッキングのドキュメントを参照してください?それはyoyurの記述からいくつかのことができます。

AJAXと心に留めて物事のカップル:

1:ほとんどのブラウザは、同時に

2をドメインごとに2つのXHRリクエストを行います:呼び出しXHRの結果がする必要がある場合あなたがhtml5のウェブワーカーを数えない限り、データ解析中にjsが自然にシングルスレッドになると、ブラウザーにフリーズすることがあります。

3:ajaxの結果によってブラウザがdom注入のためにページを再レンダリングすると、レンダリングが遅くなりフリーズすることがありますブラウザは古いブラウザで少しです。

4:あなたは、帯域幅の制約がある場合は、ブラウザが他のものを使って行われたときに、あなたのxhrsを実行しようと、例えば、pageload

+0

ページの下部にありますが、あなたが釘付けになっていることが判明しました。私は1つのxhrを持っていますが、PHPは結果を解析し、json_encodeとjavascriptを使用して結果をajaxに送信し、divでinnerHtml-sの結果を送信します:)ページはフリーズされませんが、 (ユーザーがリンクをクリックした後) – johan

+0

よろしくお願いします。 –

0

Javascriptのソースファイルの非同期読み込みを探しますが、私はすでに非同期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