加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.Net缓存共享

发布时间:2020-12-16 03:40:56 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.Net 4.0 Web应用程序,它经常从数据库加载数据并对其进行繁重的计算.我想将这些已加载和准备好的数据缓存在中央缓存中,每个使用该应用程序的用户和计算机都可以访问该缓存. 简单的用例: 用户1访问网页,缓存为空,数据被加载/计算,数据被缓存 用户
我有一个ASP.Net 4.0 Web应用程序,它经常从数据库加载数据并对其进行繁重的计算.我想将这些已加载和准备好的数据缓存在中央缓存中,每个使用该应用程序的用户和计算机都可以访问该缓存.

简单的用例:

>用户1访问网页,缓存为空,数据被加载/计算,数据被缓存
>用户2访问网页,缓存包含数据,从缓存加载的数据
>用户3访问网页,从缓存加载的数据
>用户1重新加载网页,从缓存加载的数据
>缓存过期
>用户3刷新网页,加载/计算数据,缓存数据

我知道ASP.Net有一个内置的缓存机制.我不知道的是它是否可以在同一时间访问不同计算机上的站点的不同用户之间共享.
我还想知道系统在Web场环境中的行为方式.

解决方法

虽然其他人已经提到内置的ASP.NET缓存(System.Web.Caching),但请注意.NET 4.0引入了一个全新的缓存框架,旨在在System.Web.Caching命名空间之外工作:

System.Runtime.Caching

http://msdn.microsoft.com/en-us/library/system.runtime.caching(VS.100).aspx

现在,这比简单的System.Web.Caching的Cache项更像是野兽.但是,您可以获得多个缓存存储,锁定缓存对象/密钥以及创建自己的外部缓存提供程序的扩展点的优势 – 例如Microsoft的新版本Velocity distributed caching system.它内置了MemoryCache提供程序.

这真的不是那么难以使用.直接来自MSDN关于内置MemoryCache提供程序的文章(同样,您可以实现自己的)在WinForms应用程序中使用它(您将更改Web应用程序的代码):

http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx

ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;

if (fileContents == null)
{
    CacheItemPolicy policy = new CacheItemPolicy();

    List<string> filePaths = new List<string>();
    filePaths.Add("c:cacheexample.txt");

    policy.ChangeMonitors.Add(new 
    HostFileChangeMonitor(filePaths));

    // Fetch the file contents.
    fileContents = 
        File.ReadAllText("c:cacheexample.txt");

    cache.Set("filecontents",fileContents,policy);
}

Label1.Text = fileContents;

我已经实现了NCache(如上所述),以及Memcached.我可以告诉你,微软的Velocity实际上是分区数据和在缓存分区内设置冗余的方式(非常酷).更不用说,它是免费的!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读