【问题标题】:ASP EF codefirst first queryASP EF codefirst 先查询
【发布时间】:2020-01-17 12:50:48
【问题描述】:

这个问题之前已经打开过好几次了,但都没有解决。第一个查询被认为很慢,并且查询的性能稍后会显着提高。我正在从事的项目是一个多用户项目。不可能告诉用户以这种方式使用它。我对此有严重的问题。可以做些什么来加快初始查询?

【问题讨论】:

标签: c# asp.net performance entity-framework


【解决方案1】:

您可以将性能设置发布配置改进为“发布期间预编译”。 这是一种获得更快初始请求的简单方法。

然而,在第一个数据库请求中,Entity Framework 会启动模型并且需要额外的时间,您可以通过在应用程序启动时进行一些查询来避免这种情况。更多here

可能是IIS中的应用程序池配置有问题,可以设置成一直开启,避免几分钟后变慢,更多here

【讨论】:

    【解决方案2】:

    我已经完成了@fsbflavio 建议的内容以及应用程序池的内容,但我的第一个查询仍然很慢。第一个查询之后的每个查询都很好。

    我知道这不应该是我的答案,但在我找到更好的解决方案之前,以下方法对我有用。

    我的答案是创建一个 powershell 脚本并创建一个计划任务来调用它。对于我的情况,我们的服务器每晚都会重新启动。所以,我只需要安排它在重新启动时运行,并且所有查询都在一天的剩余时间里工作。我们网络应用的用户不再需要等待 10 多秒来进行第一次查询。

    Invoke-WebRequest -Uri "https://MY_URL/api/WakeUp" -Headers  @{"accept"="text/plain"; "apiKey"="MY_API_KEY"}
    

    【讨论】:

    • 我已经编辑了我的答案,请参阅有关启动应用程序中第一个查询的链接,这也是一种解决方法。
    • @fsbflavio - 谢谢。我现在正在开发一个新的应用程序。我会将它添加到 Application_Start 中,看看会发生什么。比 powershell 脚本容易得多。老实说,我已经有一段时间不用考虑这个问题了,因为 powershell 脚本可以正常工作,但我更喜欢代码解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多