我有一个应用程序,从凌晨3点,每天早上在内容直到那时方面 没有什么变化第三方下载数据...ASP.Net缓存
是有可能缓存“产品信息”到那时为止? 或者这是我应该在global.asax中设置的东西?
我有一个应用程序,从凌晨3点,每天早上在内容直到那时方面 没有什么变化第三方下载数据...ASP.Net缓存
是有可能缓存“产品信息”到那时为止? 或者这是我应该在global.asax中设置的东西?
是的,你可以将它缓存到那时。有很多方法可以做到这一点。
如果你有一个服务器端调用来检索数据,那么当你第一次得到它并将到期时间设置为第二天凌晨3点时,我会简单地将这些数据添加到缓存中。然后在每个页面调用中检查此数据对象的缓存,如果它返回null,则启动另一次数据提取。
你也可以使用页面输出缓存,但是这并没有给你这样的详细控制。
是这样的:
if (HttpContext.Current.Cache["MyData"] != null)
return HttpContext.Current.Cache["MyData"] as DataObjectClass
//Get data into dataobject
HttpContext.Current.Cache.Add(
"MyData",
DataObject,
DateTime (tomorrow 3am), // psuedo
null,
TimeSpan.Zero,
System.Web.Caching.CacheItemPriority.Normal,
null);
return DataObject;
您可以设置它是网页本身。在该页面的代码中:
Response.Cache.SetExpires("put tomorrow's date @ 3AM here");
Response.Cache.SetCacheability(HttpCacheability.Public);
另一种选择是使用的System.Web.Caching.Cache类。每次加载数据时,都可以将其缓存在此处,然后根据需要进行检索。这个类允许TimeSpan过期,但是由于您每天在特定时间下载数据并不重要。
using System.Web.Caching;
Public Class SomeClass
{
Public SomeDataCollection GetCachedData()
{
if(Cache["Key"] == null) //You want to always be sure to check if set
Cache["Key"] = GetDataCollectionFromSomewhere();
return Cache["Key"];
}
}
我会坚持每24小时的第三方数据。缓存它取决于数据是什么。它是需要进一步处理的文件吗?然后处理它并将其缓存在内存中。你的故障转移是这样的:内存缓存,临时持久位置,第三方位置。
doh!我讨厌成为一个缓慢的typer :(这就是我将要做的:) – 2009-07-15 11:19:20