ASP.NET缓存,什么是最佳实践

时间:2010-08-13 15:48:22

标签: c# .net asp.net caching

我有一张存放歌曲和玩牌的桌子 这是代码:

//Increse plays counter
string ip = Request.UserHostAddress;
if (!string.IsNullOrEmpty(ip))
{
    if (Cache["plays:" + trackID + ":" + ip] == null)
    {
        tracks.IncreasePlaysCounter(trackID);
        Cache["plays:" + trackID + ":" + ip] = true;
    }
}

我想知道什么是更好的做法,存储许多缓存项(如此)或存储一个项目,如ArrayList,其中包含已经听过该歌曲的用户。有什么不同吗?

2 个答案:

答案 0 :(得分:2)

都不是。如果你的系统以任何方式取得成功,那么就会有太多的单独条目被写入以便能够扩展以应对,特别是当你添加锁定代码来处理同时写入和读取的数量时,这将不得不应对用。

将此信息存储在数据库中。或者根本不存储它,但是通过解析webserver日志来获取它(如果trackID是一个查询参数,那么这些信息已经存在于那些没有任何工作的日志中)。

答案 1 :(得分:0)

我将从纯粹的缓存角度而不是戏剧和曲目的背景来处理这个问题。

在决定缓存数据时,重要的是要考虑依赖关系是什么以及缓存如何过期。

如果每个用户的缓存可以单独过期,那么就可以了。如果结果是一条记录过期应该使整个记录集无效,那么将它放入ArrayList并转储整个对象。