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

C# 在ASP.NET MVC中存储对象数据,c#,asp.net,asp.net-mvc,caching,C#,Asp.net,Asp.net Mvc,Caching,我在一个基于ASP.NETMVC的网站中有一个非常简单的对象 型号: public class Visualisation { public string name { get; set; } public string[] relationships { get; set; } } 它用于建立一个名称和我的网站中保存的数据关系数组,然后通过D3JS图形显示 控制器: public ActionResult Visualisations() {

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

型号:

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);
    }
公共行动结果可视化()
{
List VisualList=新列表();
/*
大量的数据库访问、foreach循环、大量的CPU和db时间
*/
返回视图(可视化列表);
}
问题是,构建此页面(数百名用户,数千条记录,数十条数据正在为该报告整理)需要30秒,而且只会变得更糟,但数据本身并不需要经常更新

是否有一种方法可以在第一次创建VisualList对象后将其基本存储在某个位置,如果不到24小时,则将该对象返回到视图,如果超过24小时,则重新生成该对象并传递新副本


此外,在一个完美的世界中,报告只需每24小时自动生成一次,因此用户无需等待30多秒就可以加载它。

最简单的选择是缓存它,并给它24小时的生存时间,请检查


如果每个请求的数据都相同,则可以使用mvc中的
[OutputCache]
缓存视图输出,而不是数据。检查。

最简单的选择是缓存它,并给它24小时的生存时间,检查


如果每个请求的数据都相同,则可以使用mvc中的
[OutputCache]
缓存视图输出,而不是数据。检查缓存旁边的。

并尝试优化业务/db逻辑。用Lazy代替List

查看以下链接:


在缓存旁边,尝试优化业务/db逻辑。用Lazy代替List

查看以下链接:


非常完美和完整非常完美和完整