首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不影响效率的情况下将当前数据保存在缓存中- asp.net

问如何在不影响效率的情况下将当前数据保存在缓存中- asp.net
EN

Stack Overflow用户
提问于 2010-07-29 07:30:19
回答 2查看 94关注 0票数 0

我正在使用asp.net (c#)和lingtosql构建一个web应用程序。当我在我的数据库上执行更新操作时,我会更新我的类。我使用gridview绑定来更新信息。当我只依赖于数据库时,页面的加载时间很长。当我只依赖于缓存时,我拥有的是旧数据。对于异步缓存更新,但又不会因无尽的请求而使数据库过载(我希望只有在数据库本身发生更改时才更新缓存,并异步执行更新操作),我有什么变通办法。

非常感谢,

EN

回答 2

Stack Overflow用户

发布于 2010-07-29 07:47:17

你可以这样做:如果缓存在一段时间内(例如30分钟)不活动,它将刷新数据库中的数据。

代码语言:javascript
复制
Cache.Insert("CachedData", dt, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(30));

或者,您可以每隔一定次数刷新缓存中的数据。检查Cache Object。

否则,如果你需要像缓存这样的东西,它只会在你想要检查SqlCacheDependency Object的任何更新时刷新数据库中的数据。

票数 0
EN

Stack Overflow用户

发布于 2016-04-14 02:32:04

给定一个GridView:

代码语言:javascript
复制
 <asp:GridView ID="gv" runat="server">

在调用gv.DataBind()的方法中,连接到从缓存填充的数据集。

代码语言:javascript
复制
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的代码中,清除缓存。

代码语言:javascript
复制
 cache.Remove("gvDataSet");

如果更新DataSet的代码在web服务器外部,请编写一个HTTP处理程序(通用处理程序),其中包含清除缓存和从外部代码调用处理程序的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3358378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档