Wednesday, March 28, 2012

Why POST is slower than GET?

Sorry, my question can be silly and a little OT, but I'm really stuck on it...I'm performing some tests with AJAX, actually I'm not using a particular framework or some already written Javascript code. The test is just a simple HTML page that sends (one after the other) 10 requests to another page (in the same site). I'm writing out the time elapsed between the request and the response of every one. When I try this page on my local web server I get very fast responses (more or less 0.01 seconds), with both IE7 or FF2. When I do the same test from another machine (in the same network, and the network has not problems of traffic) I have totally different results. If the page is performing a GET to the server the requests are very, very fast with boht IE7 and FF2. But if I change the GET to a POST (with very few bytes of data) FF2 because much slower (0.25 seconds) and IE7...I don't know...on some machines is still very fast, but on others is as slow as FF2. I can't understand when and why?!? I tried with IE7 on XP (fast), IE6 on XP (fast), IE7 on Vista (some fast and others slow)...there are too many variables, I'm really stuck and I can't understand the difference between these machines. The security parameters seems to be the same, I tried to change them at once...

Please, help me

Cold

This is a great article about why HTTP Post is more expensive than GET. Basically it queries twice and sends more bytes over the wire.

http://msmvps.com/blogs/omar/archive/2006/09/22/Atlas-2_3A00_-HTTP-POST-is-slower-and-it_2700_s-default-in-Atlas.aspx


Thank you very much for your reply. The problem is I'm not using any framework at all and all the requests I'm doing I have written in Javascript code by myself. I checked the code many times, but I couldn't find any problems on it. And I don't have the problem of the double request, as I'm sending just one POST request with the body togheter. And, even if I found a reason for the POST to be slower than the GET, I could not understand why in some machine every request is slow and in others they are so fast (using IE)! There should be some reason, but until now I didn't find any...


I don't understand what about the article doesn't apply to your situation. Basically

1) the browser waits for the server to respond "100 Continue" before the form is submitted. There is no such delay for GET requests.

and 2) the data itself contains additional info such as content types and etc. There are actually 2 requests going on for each POST, and the actual data is twice as long. It's nothing to do with you actually manually sending 2 requests.



This can be true using Atlas, but I'm actually monitoring the requests using Fiddler, and I don't have 2 requests! I have just one request, with the body I have specified on the send() method. I don't have any of the behaviours that the article is talking about. There is just an HTTP request (with method POST) and the resposte to the request, nothing more!

Hope this help to understand my problem...

Cold

No comments:

Post a Comment