在ASP.NET MVC中存储对象数据

时间:2015-03-07 10:38:15

标签: c# asp.net asp.net-mvc caching

我在基于ASP.NET MVC的网站中有一个非常简单的对象。

型号:

public class Visualisation
{
    public string name { get; set; }
    public string[] relationships { get; set; }
}

它用于建立我的网站中保存的数据的名称和数组关系,然后通过D3JS图形显示。

控制器:

    public ActionResult Visualisations()
    {
        List<Visualisation> VisualList = new List<Visualisation>();

        /*
        A whole lot of database hits, foreach loops, heaps of CPU and db time
        */

        return View(VisualList);
    }

问题在于,这个页面的构建(数百个用户拥有数千条记录并且为此报告整理了数十条数据)需要长达30秒而且情况会变得更糟,但数据本身并没有#39;确实需要经常更新。

有没有办法在第一次创建VisualList对象之后将其存储在某处,如果已经过了不到24小时,则将该对象返回到视图,如果超过24小时,则重建它并传递新副本

此外,在一个完美的世界中,报告只会每24小时自动构建一次,因此用户永远不必等待30秒以上才能加载。

2 个答案:

答案 0 :(得分:4)

最简单的选择是缓存它,并给它24小时的寿命,检查this

如果每个请求的数据相同,您可以使用mvc中的[OutputCache]来缓存View输出,而不是数据。检查this

答案 1 :(得分:0)

除了缓存并尝试优化业务/数据库逻辑。懒惰&lt;怎么样? T>而不是List&lt; T&gt;

查看这些链接:

When should I use Lazy<T>?

https://sankarsan.wordpress.com/2009/10/04/laziness-in-c-4-0-lazyt/