我已经获得了我的 ASP.NET Web 应用程序所需的第一批真正海量的数据。到现在为止(实际上是两年!)还没有出现如此昂贵的东西,以至于我不能只在 Page_Load 上执行它或将它存储在 ViewState 或 Session 中。但是现在,我需要一个保持相当静态的对象列表(最多每天更新一次)并包含大约 5000 个对象,并且每次在 Page_Load 上构建它都会导致加载时间受到明显影响。
一些关于缓存的谷歌搜索显示了一些非常基本的例子,使用类似的东西Cache["myStuff"] = myObject;
,这一切都很好。但我想知道是否有某种方法可以将我的 Web 应用程序设置为在特定时间运行更新,而不管应用程序是否正在被访问或正在使用。
例如,我希望此过程更新列表,使其每天在凌晨 4:00 运行一次,此时没有人使用任何东西。因此,假设在第 1 天下午,Page_Load 检查以获取缓存的对象,但它返回 null,所以在这种情况下,硬着头皮请求/构建第 1 天剩余时间的列表,将其存储在缓存中. 在第 1 天剩下的时间里,没有人必须构建对象,因为它在缓存中并且仍然有效。
第 1 天结束,现在是第 2 天凌晨 4:00。没有人使用任何页面。我希望从第一天起存储在缓存中的对象被删除并重新构建,这样当人们早上到达办公室时,第一个访问该页面的人不需要构建今天的列表,已经完成了。
我唯一的想法是研究创建一个在 Windows 计划任务或其他东西上运行的控制台应用程序。但即便如此,我也不确定如何从这样的外部应用程序与 ASP.NET Web 应用程序进行交互。
希望我说得通。我想要完成的事情甚至可能吗?