2

我目前在 Application_Start 中做了大量的工作,需要一两个小时才能将 2 gigs 的数据缓存到内存中,以使我的应用程序高效运行。

使用此方法,在这些进程完成之前,Azure Web 角色实例不可用。我正在插入 HTTPRuntime 缓存,因此我无法使用 WebRole.cs OnStart() 或 Run() 方法(他们无权访问此缓存)。

您能想出一些替代方法,让我可以将这些数据加载到缓存中,同时在此缓存期间使网站可用吗?该网站在数据加载时运行良好,只是速度没有那么快。

非常感谢,-凯文

4

2 回答 2

3

调用您的方法缓存有点牵强,因为缓存通常是按需(或延迟缓存),而不是在实际需要之前加载内容的预缓存。

  1. 您可以从预缓存切换到延迟缓存
  2. 如果您必须进行预缓存,您可以将缓存保存在某种持久存储中,但要靠近您的服务器。对于 Azure,您可以在表或 Blob 存储和 SQL Azure 之间进行选择。使用持久缓存,您不会在每次更新或重新启动角色实例时加载它。
  3. 如果您可以稍等片刻,AppFabric 缓存将为您提供很大的灵活性和可扩展性,因此您不必在每个角色实例上维护单独的缓存。
于 2011-03-25T05:19:53.830 回答
1

您可以使用单独的线程将数据添加到缓存中。即,创建一个单独的线程并开始使用该线程缓存数据。

您的应用程序应该同时完美地服务。

于 2011-03-25T04:17:00.510 回答