

例えば、Google サジェストなど文字を入力する度サーバーと通信(HTTPリクエスト)しますが  
通信(HTTPリクエスト)は非同期で行われてる為、前回のレスポンスが返ってきてない状態で新たにリクエストを行います。

この時、戻ってきてないリクエストはもう不要ですがabortした方が良いでしょうか？  
それとも、放置でかまわないでしょうか？

クライアント側は、どちらの実装が良いでしょうか？


CC BY-SA 3.0
2015-03-29T00:35:55.380
8520
2020-02-20T13:08:59.113
2020-02-20T13:08:59.113
19110
4191
question
network http 非同期
通信（HTTPリクエスト）のキャンセルと放置はどちらが良いか


例で挙げていらっしゃるものですと、結局実装次第になるかと思います。  
サーバと通信するタイミングは、おそらくKey関連イベントで即時にやっているわけではなく、1秒単位等でやっていると思います（そうでなければ無駄な負荷が多すぎるので）  
また、サーバ側でも受け取ったデータの処理は1秒単位等で丸めてやっていると思うので、放置でもキャンセルでも大差ありません。

ただ、サーバ側の処理が一瞬で終わるようなものに限定し、且つあえて仰る様な実装を行う場合には、「２」の放置がより良いと思います。  
理由としては、HTTPのAPI通信で最も重い処理は、HTTPリクエスト自体の処理なので、キャンセルリクエストを送ることでより処理負荷が高くなってしまう場合の方が多いはずだからです。


CC BY-SA 3.0
2015-03-30T04:43:18.363
8550
2015-03-30T04:43:18.363
7474
8520
answer


APIの一般論としては、リクエストをきちんと完結させたり不要なリクエストをキャンセルすることを提供側が求めているのであれば、キャンセルする仕組みがあるはずです。一方で、キャンセルする仕組みが無ければそもそも利用者にはどうしようもありません。

単純なリクエスト/レスポンスを繰り返すweb
APIはまず間違いなく後者でしょうが、重い処理をする(レスポンスに時間がかかる)処理とか、状態を持っているものであればキャンセルする仕組みがある場合もあります。

ということで、コスト云々よりもまずはAPIの仕様を確認すべきです。


CC BY-SA 3.0
2015-03-31T03:35:42.850
8588
2015-03-31T03:35:42.850
5793
8520
answer