【发布时间】:2018-09-28 14:27:57
【问题描述】:
在模块化 ASP.Net 应用程序上使用 Entity Framework 6.1.3。当创建像“销售订单”这样的实体时,这意味着初始化几个模块DbContexts。通常,在服务器重启后创建的第一个“销售订单”需要数十秒才能完成,而且很多时候这会导致客户端超时,这在用户体验方面非常糟糕。
这是由于 EF 的性质而不可避免的,还是可以缓解的?
【问题讨论】:
在模块化 ASP.Net 应用程序上使用 Entity Framework 6.1.3。当创建像“销售订单”这样的实体时,这意味着初始化几个模块DbContexts。通常,在服务器重启后创建的第一个“销售订单”需要数十秒才能完成,而且很多时候这会导致客户端超时,这在用户体验方面非常糟糕。
这是由于 EF 的性质而不可避免的,还是可以缓解的?
【问题讨论】:
这种“第一次请求缓慢”问题是典型的 EF 行为。您可以采取多种措施来解决此问题,但无法完全解决此问题。由于 EF 使用的元数据的初始创建,上下文的初始创建需要时间。这篇文章展示了您可以采取的几项措施来缩短启动时间。
此外,我们过去做过的另一件事是在我们的服务端点应用程序启动时强制进行初始创建……这样,服务应用程序会接受点击,但您的最终用户看不到。您还可以通过执行某种类型的脚本来执行类似的操作,该脚本在部署后 ping 您的服务端点(如果使用 SOA),以便第一个请求被不是真正消费者的东西击中。
【讨论】: