我有一个对远程数据库的查询非常慢的 asp 网站。为了解决这个问题,我在 Application_Start 中使用缓存。
HttpRuntime.Cache["Folders"] = (from f in db.Folders select f).ToList();
在控制器中
var folderList = (List<Folder>)HttpRuntime.Cache["Folders"];
第一次加载网站需要相当长的时间,但是当它启动时它很快。我还使用 IIS 的新 serverAutoStart="true" 功能,因此网站始终在加载缓存的情况下运行。即使应用程序池重新启动,IIS 也会在新的 W3wp 进程中加载网站,并在加载新实例时切换进程。导致没有停机或启动缓慢。
但是现在我想在发生某些控制器操作时重新加载缓存。那么是否可以在不阻塞所有网站或在重新加载时触发该操作的会话的情况下异步重新加载它?另外我希望当前的 Cache["Folders"] 在操作期间仍然有效。