发现Mvc Web Api在http传输请求是很慢, 一个简单的调用,服务器都什么都不做直接返回。
调用api路径的用时3s左右, 不调用api路径的80毫秒左右。
有什么高效率传输的mvc web api实现方式没有。。
console.time('delete');
console.time('delete1');
var data = table.fnGetData($(this).parents('tr'));
$.ajax({
url: '@Url.Content("/api/Users?id=")' + data.Id,
//url: '@Url.Content("/User/Delete?id=")' + data.Id,
type: 'delete',
dataType: 'json'
, success: function () {
console.timeEnd('delete1');
}
})
.done(function (data) {
console.timeEnd('delete');
})
.fail(function (data) {
});
这不是ASP.NET Web API的问题,是应用程序的问题,将Action中的代码注释试试。
[HttpDelete]
public HttpResponseMessage Delete(string id)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, new { id=1});
return response;
}
public ActionResult Delete(string id) {
return Json(string.Empty);
}
额。服务器啥都没做,只是简单的返回。
@中国木头: 每次调用3秒,还是只是第1次调用3秒
@dudu: 每次~~~
@中国木头: Get也是3秒?
@dudu: 多次测试结果。
get: 2024.157ms
Index:975 apiget: 3885.184ms
Index:992 get: 50.940ms
Index:992 get: 72.139ms
Index:975 apiget: 3634.824ms
Index:992 get: 141.347ms
Index:975 apiget: 1007.428ms
Index:992 get: 188.811ms
Index:975 apiget: 2067.574ms
Index:992 get: 44.411ms
Index:975 apiget: 2217.538ms
@中国木头: IIS版本是多少?
@dudu: 上面是vs2013调试结果
下面是win7 发布到iis测试结果... 坑爹的~~~~~
get: 18.741ms
Index:975 apiget: 57.073ms
Index:992 get: 20.472ms
Index:975 apiget: 56.933ms
Index:992 get: 31.265ms
Index:975 apiget: 75.389ms
Index:992 get: 31.522ms
Index:975 apiget: 89.761ms
Index:992 get: 29.259ms
Index:975 apiget: 74.465ms
Index:992 get: 31.036ms
Index:975 apiget: 69.579ms
@中国木头: VS2013中用的是IIS Express吗?
@dudu: 嗯 ,用的默认IIs Express
一般情况是数据库操作的原因,都到秒级别了.
测试的时候已经将服务器操作屏蔽,都是直接返回。。
先用 Fidder 或者 IE 的“开发人员工具”分析下性能数据,如果从客户端发送完请求后直到收到响应的第一个字节用时大于 80 毫秒,那么就去 IIS 的日志中查看 time-taken 字段的值。