【问题标题】:Isn't it too fast for an ASP.NET page to download in 0 ms?一个 ASP.NET 页面在 0 毫秒内下载是不是太快了?
【发布时间】:2011-02-27 17:54:33
【问题描述】:

我目前正在测量从 C# 程序加载网页所花费的时间。

Visual Studio 解决方案有一个控制台程序和一个只有一页的 ASP.NET 网站。该网站托管在 ASP.NET 开发服务器上。控制台应用程序像这样查询网页:

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();

网页没有什么特别之处,只是加载响应,没有 ASP.NET 代码:

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

现在,秒表显示代码每次花费 0 毫秒。完成所有工作(查询服务器、获取响应等)。

这怎么可能?我在做的事情没有问题吗?真的,我预计至少需要 10-20 毫秒。执行所有客户端代码,然后是 100 毫秒。到:

  • [客户端]从uri中找到要查询的页面(不需要DNS查询,所以很快),
  • [客户端] 执行请求,
  • [服务器端] 初始化 ASP.NET 引擎,
  • [服务器端]处理请求,
  • [服务器端]查找并读取.aspx文件并执行编译后的代码(至少读取文件可能会花费数毫秒),
  • [服务器端]构建响应,包括标头,然后发送,
  • [客户端] 接收响应并处理它(修剪)。

那么为什么它如此之快?是否有一个棘手的缓存只是跳过所有/大部分步骤并将“Hello World”返回给客户端?

如果有“隐藏”缓存,它在哪里?如何禁用它以衡量“实际”花费的时间?

【问题讨论】:

  • 您如何检查秒表返回值?您是否正在检查 ElapsedMilliseconds 属性?您总是可以在代码中休眠以测试它是否正常工作。仅仅因为它在本地主机上并不意味着它可以调用页面,等待它被渲染并在不到 1 毫秒的时间内检查响应。

标签: c# asp.net performance caching asp.net-development-serv


【解决方案1】:

是的,这可以而且必须是 0 毫秒!因为您的服务器位于 localhost 上。尝试在全球网络中的其他地方获取 ASP.NET 服务器。

而且您没有解析 localhost,因为这是127.0.0.1 的常量地址。 与此地址的通信仅由您的操作系统内核操作。

【讨论】:

  • 好的,既没有 DNS 查询,也没有与网络相关的慢任务。但是 ASP.NET 引擎呢?它真的会读取 .aspx 文件吗?它是否执行代码隐藏?我认为即使读取一个字节的文件也会花费几毫秒。
  • 我希望 ASP.NET 不会占用 2 毫秒/文件。因为这意味着它每秒不能处理超过 500 个请求。我希望缓存所有小文件。
  • 好的,我找到了。抱歉,这是我的代码中的一个愚蠢错误,导致 0 毫秒。结果。你有什么建议?我是关闭问题,还是离开并接受第一个答案?顺便说一句,现在时间测量正确,它给出了 1.1 秒,这非常糟糕。另一方面,因为我处于调试模式,所以单步执行 ASP.NET 代码对于调试器来说可能会很长。
猜你喜欢
  • 2015-03-23
  • 2014-04-28
  • 2015-10-08
  • 2011-11-23
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 2014-04-12
  • 2021-10-19
相关资源
最近更新 更多