我正在使用asp.net (c#)和lingtosql构建一个web应用程序。当我在我的数据库上执行更新操作时,我会更新我的类。我使用gridview绑定来更新信息。当我只依赖于数据库时,页面的加载时间很长。当我只依赖于缓存时,我拥有的是旧数据。对于异步缓存更新,但又不会因无尽的请求而使数据库过载(我希望只有在数据库本身发生更改时才更新缓存,并异步执行更新操作),我有什么变通办法。
非常感谢,
发布于 2010-07-29 07:47:17
你可以这样做:如果缓存在一段时间内(例如30分钟)不活动,它将刷新数据库中的数据。
Cache.Insert("CachedData", dt, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(30));或者,您可以每隔一定次数刷新缓存中的数据。检查Cache Object。
否则,如果你需要像缓存这样的东西,它只会在你想要检查SqlCacheDependency Object的任何更新时刷新数据库中的数据。
发布于 2016-04-14 02:32:04
给定一个GridView:
<asp:GridView ID="gv" runat="server">在调用gv.DataBind()的方法中,连接到从缓存填充的数据集。
System.Web.Caching.Cache cache = HttpContext.Current.Cache;
System.Data.DataSet gvDataSet = cache.Get("gvDataSet") as System.Data.DataSet;
if (gvDataSet == null)
{
gvDataSet = GetDataSetFromDatabase();
cache.Insert("gvDataSet",
gvDataSet,
null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
TimeSpan.FromMinutes(120),
System.Web.Caching.CacheItemPriority.Default,
null);
}
gv.DataSource = gvDataSet;
gv.DataBind();在更新DataSet的代码中,清除缓存。
cache.Remove("gvDataSet");如果更新DataSet的代码在web服务器外部,请编写一个HTTP处理程序(通用处理程序),其中包含清除缓存和从外部代码调用处理程序的代码。
https://stackoverflow.com/questions/3358378
复制相似问题