我正在使用ASP.NET的数据缓存API。例如:
HttpRuntime.Cache.Insert(my_data, my_key);
有没有办法配置缓存,以便在App Domain回收时保留其内容?
我将许多对象加载到缓存中,但每次应用程序域重新启动时都会重新加载这些对象。假设这个问题我无法阻止由于服务器配置而重启appdomain。
答案 0 :(得分:2)
有没有办法配置缓存呢 它的内容保存时 App Domain回收?
没有。 Cache对象保存RAM中的引用。周期。
备选方案:
我自己通常更喜欢#3,尽管有些情况下其他人都适合。
答案 1 :(得分:0)
回收appdomain会转储缓存。如果你想解决这个问题,你需要使用分布式缓存。 Here就是一个例子。
答案 2 :(得分:0)
对于最昂贵的数据,您可以使用分布式缓存(如Memcached或velocity)缓存对象。根据对象的大小和运行时的长度,您还可以将其序列化为磁盘或数据库,前提是这些资源的访问速度小于创建对象的时间。
现在因为进程内缓存与任何其他解决方案相比都非常快,因为它只保存对内存对象的引用,您将尽可能使用它。您可以将缓存对象的副本保留在磁盘上,直到它丢失,然后从中重新创建并将其放入内存中。这很棘手的是当你必须使数据到期时所以只使用cache / disk / sql组合,你不需要使数据失效/无效,否则你需要确保清除这两者。例如,这也将无法在共享服务器上实现分布式缓存。