1

AJAXを中止する方法を尋ねていません。

この場合、サーバーが送信されないようにする方法を知っている人はいますか?

たとえば、動的ページ付けでは、ユーザーは一度に1行をすばやくスクロールして、多くの要求を引き起こす可能性があります。

これは、を使用してクライアント側のjQueryで簡単にキャンセルできますがabort、帯域幅の割り当てにペニーをつまんでいる人にとって、新しい要求が受信されたときに以前の要求が送信されないようにするにはどうすればよいですか?

よろしくお願いします!

詳細

実際、これはjQuery UIスライダーを使用していてslide、サーバーにヒットするようにイベントを設定したためです。

ご想像のとおり、その吸盤を10%横切ってスライドさせると、サーバーは狂ったようにヒットし、私がabort編集したにもかかわらず、すべてのデータを送信し続けます。

おそらく(私の考えでは)上ボタンまたは下ボタンを速く押すだけでは止められないので、これが問題の本当の原因です。

4

2 に答える 2

1

私はそれを考えすぎていると思います。

動的なページネーションの場合、 phpの最初に$_SESSIONequalを設定し、それを変数に保持できると思います。microtime(true)

送信の直前(または他のリソースを大量に消費するステップ)に、それがまだ等しいかどうかを確認できます。そうでない場合は、exit

ただし、他の誰かが複数の並列リクエストを許可できる汎用ソリューションを思い付くことができれば、彼らは私からチェックと+1を受け取ります。

于 2012-12-30T09:23:09.087 に答える
-1

この場合、サーバー送信イベントの使用を検討できます。これにより、サーバーからクライアントにデータを送信するための永続的なHTTP接続が開きます。これにより、クライアントがデータを迅速に要求して帯域幅を浪費するのを防ぎます。サンプルコード:

サーバー側:(PHP)

<?php
@set_time_limit(0);
header('Content-type: text/event-stream');
header('Transfer-encoding: chunked');
while(true){
    echo 'data:'.$data."/n/n";//todo: send data here
    ob_flush();
    flush();
}
?>

クライアント側:(javascript)

var ev = new EventSource('path/to/script');
ev.onmessage = function(e){
    var data = e.data;
    //todo: handle data here
};

これがお役に立てば幸いです。

于 2012-12-30T09:03:52.977 に答える