主页加载速度更快的异步方法



我正在构建一个应用程序,在部署它之后,我用互联网上的几个工具对它进行了测试,其中一个是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);
    }

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

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

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

然而,正如mattytomo所提到的,你一定要限制你的查询,否则你可能会被故意(和无意地被谷歌机器人等)的拒绝服务攻击

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处理,从而进一步提高速度。

最新更新