开发者

Isn't it too fast for an ASP.NET page to download in 0 ms?

I'm currently measuring the time spent to load a web page from a C# program.

The Visual Studio solution has a console program and an ASP.NET website with just one page. The website is hosted on ASP.NET Development Server. The console application queries the web page like this:

bool isSuccess;

Stopwatch timeSpentToDownloadPage = Stopwatch.StartNew();

WebRequest request = HttpWebRequest.Create(new Uri("http://localhost:12345/Test.aspx", UriKind.Absolute));

request.Timeout = 200;

using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    StreamReader sr = new StreamReader(responseStream);
    string responseText = sr.ReadToEnd().Trim();
    isSuccess = (responseText == "Hello World");
}

timeSpentToDownloadPage.Stop();

The web page has nothing special, just a response on load and no ASP.NET code:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello World");
}

Now, the stopwatch shows every time that the code spent 0 ms. to do all the work (querying the server, getting the response, etc.).

How is it possible? Isn't there something wrong with what I'm doing? Really, I expected at least 10-20 ms. to execute all client-si开发者_JAVA百科de code, then 100 ms. to:

  • [client side] Find the page to query from uri (which does not require DNS query, so it's quite fast),
  • [client side] Do the request,
  • [server side] Initialize ASP.NET engine,
  • [server side] Process the request,
  • [server side] Find and read .aspx file and execute compiled code (at least reading file may cost several ms.),
  • [server side] Build response, including headers, then send it,
  • [client side] Receive the response and process it (trim).

So why is it so extremely fast? Is there a tricky cache which just skips all/most of the steps and return "Hello World" to the client?

If there is a "hidden" cache, where is it and how can I disable it to measure the "real" time spent?


Yes this can and must be 0 ms! Because your server is on a localhost. Try to get ASP.NET server somewhere else in a world wide network.

And you don't resolving localhost because this is a constant address to 127.0.0.1. And communication to this address is operated only by the your OS kernel.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜