Javascript 5分钟不活动后Web API的高响应时间

Javascript 5分钟不活动后Web API的高响应时间,javascript,c#,sql,asp.net-web-api,Javascript,C#,Sql,Asp.net Web Api,我在试生产环境中遇到了一个奇怪的问题 我有一个网站,它在另一台服务器上托管的Web Api上执行一些操作 通常,发出一个特定的post请求需要不到一秒的时间,但在5分钟的不活动后,相同的post请求将需要10-30秒。(根据谷歌chrome网络标签) 上述post请求不是执行的请求列表中的第一个请求 请求是使用Ajax完成的 我已经运行了SQLProfiler来查看数据库查询是否运行得很慢,但是这些查询都执行得很好,而且POST请求似乎只是延迟返回 你们知道为什么会发生这种情况吗?一个很可能的原

我在试生产环境中遇到了一个奇怪的问题

我有一个网站,它在另一台服务器上托管的Web Api上执行一些操作

通常,发出一个特定的post请求需要不到一秒的时间,但在5分钟的不活动后,相同的post请求将需要10-30秒。(根据谷歌chrome网络标签)

上述post请求不是执行的请求列表中的第一个请求

请求是使用Ajax完成的

我已经运行了SQLProfiler来查看数据库查询是否运行得很慢,但是这些查询都执行得很好,而且POST请求似乎只是延迟返回


你们知道为什么会发生这种情况吗?

一个很可能的原因是在数据库级别编译。第一次使用大多数数据库引擎运行查询时,必须编译sql并制定执行计划。然后缓存一段时间。当它不再缓存时,必须再次进行缓存。sql字符串越长,编译所需的时间就越长

解决方案是使用存储过程。一旦它运行,一旦它保持编译状态,执行计划总是可用。

问题解决了

问题是在请求中使用SMTPClient发送了一封电子邮件

在web应用程序中,smtp客户端不是异步的,因此必须在POST请求返回之前发送它

使用此问题中代码的回复使其异步:


解决了这个问题

我想你指的是响应时间?请求应该很快发送。很可能是您的web API存在问题,可能与身份验证/缓存相关。在不了解系统的情况下很难说。谢谢你的回复。但是,当我查看探查器时,它看起来好像所有的数据库查询都已运行,然后在10-30秒内什么也没有发生。