在 ASP.NET MVC 中存储对象数据
Storing object data in ASP.NET MVC
我在 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 秒,而且只会变得更糟,但数据本身并不需要经常更新。
有没有一种方法可以在第一次创建 VisualList 对象后将其存储在某个地方,如果不到 24 小时,return 将该对象保存到视图中,如果超过 24 小时,则重建它并传递新副本。
此外,在理想情况下,报告会每 24 小时自动构建一次,因此用户永远不必等待 30 多秒来加载它。
对你来说最简单的选择是缓存它,并给它 24 小时的生命周期,检查 this。
如果每个请求的数据都相同,您可以使用 mvc 中的 [OutputCache]
来缓存视图输出,而不是数据。检查 this.
在缓存旁边并尝试优化 business/db 逻辑。 Lazy< T > 而不是 List< T >
怎么样
查看这些链接:
When should I use Lazy<T>?
https://sankarsan.wordpress.com/2009/10/04/laziness-in-c-4-0-lazyt/
我在 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 秒,而且只会变得更糟,但数据本身并不需要经常更新。
有没有一种方法可以在第一次创建 VisualList 对象后将其存储在某个地方,如果不到 24 小时,return 将该对象保存到视图中,如果超过 24 小时,则重建它并传递新副本。
此外,在理想情况下,报告会每 24 小时自动构建一次,因此用户永远不必等待 30 多秒来加载它。
对你来说最简单的选择是缓存它,并给它 24 小时的生命周期,检查 this。
如果每个请求的数据都相同,您可以使用 mvc 中的 [OutputCache]
来缓存视图输出,而不是数据。检查 this.
在缓存旁边并尝试优化 business/db 逻辑。 Lazy< T > 而不是 List< T >
怎么样查看这些链接:
When should I use Lazy<T>?
https://sankarsan.wordpress.com/2009/10/04/laziness-in-c-4-0-lazyt/