在global.asax Application_Start,windows azure角色中缓存大量数据

时间:2011-03-25 04:10:50

标签: c# caching azure global-asax azure-web-roles

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

使用此方法,在完成这些过程之前,Azure Web角色实例不可用。我插入HTTPRuntime缓存,所以我不能使用WebRole.cs OnStart()或Run()方法(他们没有加入此缓存)。

您能想到我可以将这些数据加载到缓存中的其他方式,同时还可以在此缓存期间使网站可用吗?网站在加载数据时运行良好,但速度不快。

非常感谢, -Kevin

2 个答案:

答案 0 :(得分:3)

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

  1. 您可以从预缓存切换到延迟缓存
  2. 如果必须进行预缓存,可以将缓存保留在某种持久存储中,但靠近服务器。对于Azure,您可以选择Table或Blob存储和SQL Azure。对于持久性缓存,每次更新或重新启动角色实例时都不会加载它。
  3. 如果您稍等一下,AppFabric Cache会为您提供很大的灵活性和可扩展性,因此您无需在每个角色实例上维护单独的缓存。

答案 1 :(得分:1)

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

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