Joh*_*udi 11 performance google-chrome fiddler asp.net-web-api postman
我有一个公开所有动词的ASP.NET Web API - 方法基本上是空的.
要运行项目,您可以这样做:从VS 2017启动一个新的asp.net Web项目 - 然后选择Web API.创建项目后,执行清理然后重建.打开"ValuesController",在PUT方法中放置一个断点,然后运行你的项目.
以下是API的代码(控制器代码 - 我在PUT方法中添加了一行):
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
var x = "value: " + value;
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
Run Code Online (Sandbox Code Playgroud)
对于其他HTTP方法(GET,POST,DELETE),我没有得到相同的问题或时间差(或者它们是非常微不足道的).
获取时间数据:
POST时序数据:
删除时间数据:
通过IE输出时序数据:
现在 - 这是通过CHROME的 PUT时序数据:
我也尝试将我的API放在服务器上 - 因此调用API将调用http:// test-server-01/api/values/1等 - 但PUT的相同问题仍然存在.
我的问题:有人可以解释发生了什么吗?与其他VERBS相比,为什么PUT的调用速度如此之慢?这也只发生在Chrome中 - 我尝试在IE中进行相同的调用,从而实现更快的性能.
[更新]
我使用Chrome Dev Tools进行了一些计时收集,我注意到大部分延迟发生在慢速到第一个字节(TTFB).以下是我的一个时间数据的屏幕截图:
[更新]
以下是IE与Chrome之间没有Fiddler的更多时序数据.使用相应的开发人员工具捕获计时.
上面的时间几乎是IE和Chrome中多个PUT调用的平均值.Chrome总是~8秒,IE约为4秒.
相比之下,在IE和Chrome中发布POST会导致它们之间的差异微不足道 - 它们都会导致大约20ms到50ms(尽管Chrome几乎总是更快).
在结果中进行DELETE调用也类似于POST,范围从~10ms到~18ms(Chrome几乎总是更快).
[更新更多]
我尝试创建一个MCVE - 但我无法在另一台机器上复制该问题.我将解决方案放在另一台笔记本电脑上,使用VS 2017运行它,通过Chrome点击localhost - 没有延迟/性能不佳呼叫PUT.我收集的时间数据与POST或DELETE相同或类似.
所以看来这个问题可能与我的工作机器隔离开来了.可能是网络问题?代理?但如果是这样的话 - 不应该所有的电话,包括POST或DELETE或GET都被延迟或者性能不佳吗?或者,为什么IE对PUT表现更好 - 如果问题与网络/代理相关?
[更新更多]
我使用bash通过curl运行PUT调用 - 非常快,没有任何延迟来自同一台机器,给了我8秒钟的CHROME.
归档时间: |
|
查看次数: |
998 次 |
最近记录: |