Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Very large HTTP request vs many small requests

I need a 2D array (as Json) to be sent from server to client. It would be around 400x400 in size with each entry around 4 characters of text. So that makes it around 640KB of data.

Which of the following extreme approaches is better ?

  1. I make a large HTTP request of all the data at one go.
  2. I make 400 requests - each asking for a single row (around 1.6 KB)

I believe optimal approach would be somewhere in middle. Could anyone give me an idea what might be the optimal single request size for this data?

Thanks.

like image 881
Nikhil Garg Avatar asked Jun 29 '10 06:06

Nikhil Garg


People also ask

How many API calls is too many?

These plans can vary depending on a particular API or a user's current service plan. But in most cases our servers will reject API requests from a particular application if the request rate exceeds 30 API requests per minute. In this case the client will get an HTTP error with status code 429 “too many requests”.

What is too many API requests?

The 429 status code means too many requests. The Retry-After header specifies that you can retry the API call in 93 seconds. Your code should stop making additional API requests until enough time has passed to retry.

Why did your client have to send several HTTP requests?

8.1.A client that supports persistent connections MAY "pipeline" its requests (i.e., send multiple requests without waiting for each response). A server MUST send its responses to those requests in the same order that the requests were received.


1 Answers

Couple of considerations for choosing one big vs several small:

  • In the single request case, you can't do progressive data processing as the data arrives; you need to wait for the full packet to arrive before you can do anything. If it fails, you need to start everything from scratch.
  • In the multiple requests case, you can do progressive data processing. However, you now have to consider the potential for multiple failures and how to recover from these.
  • Multiple requests incur overhead for each request. This is additional bandwidth you app will be consuming.
  • Some HTTP agents limit the number of concurrent requests to the same server, and you might need to do some logic to work around that.
  • Response compression will work better for the single request case.
  • Multiple requests won't require you to allocate the full memory for your data. Granted, 640KB is not that big chunk of memory, so that might not be a big consideration for you, depending on how often you will allocate it.
  • In the case of early terminate of the process (either a Cancel button or the app is terminated or the browser navigates away from your page), the single request will still finish the full response download; however, for the multiple requests case, any request your code hasn't started yet will not be executed.

Honestly, I wouldn't be that worried about the last two and would base my choice on 1) is progressive data processing important; and 2) what your app tolerance is for failures and partial data.

like image 114
Franci Penov Avatar answered Oct 03 '22 13:10

Franci Penov