我正在使用一个使用静态ConcurrentDictionary对象进行缓存的类。请求数据时,它首先查看ConcurrentDictionary。如果在那里找不到它,则从数据库中检索它,并将其放入ConcurrentDictionary。
数据在多个请求中保留在此集合中,应该如此。但是这种特殊行为是由于它是ConcurrentDictionary而不是常规Dictionary,还是只是任何静态对象的行为?
此外,有时当我加载页面时,它必须从数据库重新加载数据。这些数据存储在何处,以及导致此缓存/字典清除的原因是什么? IIS中是否存在控制此操作的网站或应用程序池的超时设置?
答案 0 :(得分:1)
ConcurrentDictionary
非常棒 - 它可以防止对同一个键进行多次“写入”操作。
在跨多个请求/用户处理共享数据时,static
变量很棒(但可能不是线程安全的)。
简而言之:
static
属性,它正在多个用户之间共享。 ConcurrentDictionary
关于问题的第二部分:
在应用程序之前,您的类的静态变量不会被垃圾回收 托管您的课程的域名已卸载