1

我正在构建一个应用程序,在部署它之后,我使用互联网上的几种工具对其进行了测试,其中之一是http://developers.google.com/speed/pagespeed/insights/

测试后,它告诉我服务器响应很慢。我注意到当我打开我的主页时,打开页面需要一段时间。

这是我的索引方法:

public ActionResult Index()
    {
        IndexModel indexModel = new IndexModel();

        indexModel.news = db.News.ToList().OrderByDescending(News => News.Date);
        indexModel.paper = db.Papers.ToList().OrderByDescending(Paper => Paper.Date);

        return View(indexModel);
    }

我想把它变成一个异步方法。这会让它更快吗?或者您有其他解决方案吗?

4

2 回答 2

0

是的,async 会加快速度,因为它们是可以并行执行的任务。但是您必须进行每次调用以使您的记录异步,而不仅仅是一个同时调用两个调用的异步方法。不过,在这种情况下,我假设您从同一个数据源(即数据库)访问两者NewsPaper因此不确定您获得了多大的收益,因为您将负载放在数据库服务器上。

我建议您从阅读MSDN 上的异步编程开始

但是,正如 mattytommo 所提到的,您绝对应该限制您的查询,否则您可能会受到有意的 DoS 攻击(以及无意中被 Google bot 等攻击)

于 2013-08-27T09:37:17.690 回答
0

indexModel对我来说似乎很静态。我的意思是它对任何参数都没有任何依赖性。您正在为所有请求提供所有记录。

为什么不将这些记录保存在ApplicationContext并仅在它们丢失时才进入数据库ApplicationContext

我敢打赌,这将使您的速度测试提高 50%。

编辑

将所有 css 文件和 javascript 文件捆绑到单个文件中并缩小它们。这有助于您更快地进行第一次加载。这将减少浏览器发送的请求数量,使其加载速度更快。

编辑

修改您的代码如下

indexModel.news = db.News.OrderByDescending(News => News.Date).ToList();
indexModel.paper = db.Papers.OrderByDescending(Paper => Paper.Date).ToList();

这将在数​​据库中对其进行排序,从而减少 c# 处理,从而进一步加快速度。

于 2013-08-27T09:41:47.510 回答