1

我有一个 Asp.Net 网络表单页面。我在应用程序中一个复杂页面的页面上有 8 个查询。可以缓存 2 个查询并且它们已经被缓存,但其他 6 个需要访问数据库。页面在 2 秒内加载正常,没有任何延迟。但是,作为最佳实践以及性能,我想知道是否应该使它们异步。问题是如果我让它们异步,每个查询都必须使用不同的连接,因为目前我正在存储连接对象,HttpContext.Current.Items如果我在不同的线程上,这将不可用。

我应该使用Taskapi 还是应该只让它们保持同步?请提出最佳做法。

4

3 回答 3

1

如果您想优化数据库访问时间,请尝试实施 Garath 和 mesterak 的建议——这应该会给您带来额外的性能改进。

但是,我必须说,如果我的页面在 2 秒内加载,我真的不会费心在这方面进行任何优化。

在继续工作之前要问自己几个问题:

  • 你怎么知道它的数据库调用是否对页面加载影响最大?
  • 您是否看到页面跟踪或只是假设它是产生最大影响的数据库?
  • 你做了什么来优化其他元素?

以下是您可以尝试的其他几个建议:

  • 创建页面跟踪并检查结果。这是一个很好的教程
  • 使用PageSpeed检查您的页面,看看在其他方面是否有任何优化
  • 查看这些关于如何优化其他页面元素的教程
于 2013-08-02T09:01:04.127 回答
1

在我看来,最好的选择是将这些查询组合在一起。如果这完全不可能,至少使用 sql 连接运行它们。在您使用共享 sql 连接之前,使用 async 可能不会增加时间,但我认为这是不可能的。

于 2013-08-02T04:16:34.407 回答
0

我相信这取决于您如何调用数据库。可以创建一个简单的数据库处理类(静态)来建立一个连接,然后执行的任何查询都可以重用相同的连接对象。异步调用仅意味着您正在并行执行它们;这可能会改善用户体验(更快的性能),但对数据库的调用次数是相同的。如果您提供有关如何在代码中对数据库执行查询的更多详细信息,也许我们可以更好地回答您的问题。

于 2013-08-02T04:30:35.750 回答