用于存储对象列表的Cache或Application变量?

时间:2013-05-29 17:59:15

标签: c# asp.net caching application-start

在我的应用程序中,我将一些xml文件读入对象列表(List<Thing>),但我希望避免在每个请求上都按下文件系统。 xml文件中的数据很少更改,因此我想以某种方式缓存它。在应用程序启动时加载数据或加载它是懒惰的,对我来说没问题。我需要能够在整个应用程序中使用数据并对其运行Linq查询,几乎将其用作内存中的迷你数据库。我需要能够在不影响缓存版本的情况下更改/更新数据,因此也可能需要将数据复制到本地变量。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用缓存对象。

myxmllist = HttpContext.Current.Cache["myxmllist"];

    if (myxmllist == null)
    {
        //get xml from server

        HttpContext.Current.Cache.Insert("myxmllist", myxmllist); // add it to cache
    }

答案 1 :(得分:1)

System.Runtime.Caching.MemoryCacheSystem.Web.Caching.Cache的主要好处之一是能够为您缓存的项目设置过期策略。如果您要仅加载一次数据并将其保存在内存中以保持整个过程的生命周期,您也可以使用您创建的静态类成员并在同一类的静态构造函数中填充数据。如果您的更改/更新操作不应影响内存中的数据,则需要将数据加载(或复制)到容器的另一个实例中并更改(并可能保存)它。