我正在使用ASP.NET的数据缓存API。例如:
HttpRuntime.Cache.Insert(my_data, my_key);
有没有办法配置缓存,使得当应用程序域重启时缓存内容得以保留?
我将许多对象加载到缓存中,但每次应用程序域重新启动时,重新加载这些对象会有相当大的延迟。假设对于这个问题,由于服务器配置,我不能阻止应用程序域的重启。
对于最昂贵的数据,您可以使用分布式缓存(例如Memcached或velocity)缓存对象。根据对象的大小和运行时间的长度,您还可以将其序列化到磁盘或数据库中,前提是访问这些资源的速度小于创建对象的时间。
现在,由于进程内缓存与任何其他解决方案相比非常快,因为它只持有对内存对象的引用,所以您应该尽可能使用它。您可以在磁盘上保留缓存对象的副本,直到丢失,然后从中重新创建并放置在内存中。当您必须过期数据时,这会变得棘手,因此只在不需要过期/使数据无效的情况下使用缓存/磁盘/SQL组合,否则您将需要确保清除两者。这也可以解决在共享服务器上无法实现分布式缓存的问题。