asp.net怎么实现缓存一张表的数据 缓存Gridview中1万多条的数据怎么实现????是用内置对象吗,Session吗,??? 代码要怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public DataTable CacheDataTable(string cacheKey, string StrSql) { Cache cache = System.Web.HttpContext.Current.Cache; object cacheItem = cache.Get(cacheKey) as DataTable; if (cacheItem == null) { DataSet ds = new DataSet(); //这里写读取数据的代码 cacheItem = ds.Tables[0]; cache.Insert(cacheKey, cacheItem, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10)); } return (DataTable)cacheItem; } 大哥!一万多数据,这还拿来缓存,建议另外考虑程序确实需要不虽然Cache可以 请教::其中strSql语句用在哪啊?? 我这边用的GridView是第三方控件,想实现点击表头要能排序数据,我设置Gridview自带的排序AllowSort="True",点击表头排序,数据全都没了................ beyond_me21 老大,我这边的Cache cache 属性后面跟不了Get 用Cache可以直接跟, string StrSql语句用在哪` Cache缓存不太懂` 能不能讲再清楚点,` 怎么调CacheDataTable函数 stringsql这个是让你自己写读数据的,如果缓存时间到期了就直接从数据库中读,否则直接从缓存中取数据,不要告诉我你读数据不会吧。你也可以换成其它参数也可以啊,我只是给你一个例子Cache cache 属性后面跟不了Get你引用了using System.Web.Caching没有? 你有经常查询1万条数据然后返回给界面层处理的代码吗?没有就根本不应该去缓存1万条数据。比如经常要查询某个用户的信息,那么应该把查询过的用户的信息缓存起来,然后就直接使用查询过的结果。而不是前台刚刚要查询1个用户信息时就去缓存所有用户的信息。缓存的单元通常是每一个业务逻辑查询功能!比如要查询某个机构在2个月内买过的所有股票的最近3个交易日的价格的变动的最高和最低值,那么这个查询得到的是一个报告。这个查询如果可能在网站中复用(因为关注这机构的用户很多,它们可能从不同的地方同时访问这个查询),就应该把查询结果(内存中的报表数据源需绑定的强类型数据集合)缓存起来,下一次数据源再调用查询业务逻辑功能时,业务逻辑处理方法就会首先自动将查询参数生成key并且到缓存中去看看有没有数据,如果没有才会去访问数据库,访问完会将结果按照key为关键字保存到缓存系统中供下次复用。所以一个缓存机制是非常简单的,只要开发一次,然后每一个业务逻辑功能只要调用缓存机制的2、3个api方法就行了。当我们要暂时停掉缓存,只要为web.config中的参数设置一下,即刻生效。 看看#6楼就知道,楼主要提高的是开发效率(早点让那个第三方的GridView正常工作),而不是运行效率,楼主说的“缓存”不是“缓存”,只是借用了“缓存”这个词。因此,所以正儿八经讨论“缓存”的内容其实都是文不对题。建议楼主好好看一下那个第三方GridView的使用手册,研究它是如何排序的,这个控件不一定要求你把整个表的数据加载进来,它也许会触发一个排序事件,你可以在这个事件里依据指定的排序表达式重新查询。使用“缓存”把整个表放到内存中并不是一个好办法。 获取数据代码就是你用sql的地方, ds 他不是没有给你么~ 要你自己写的 ~ public void DlBind() //初始化绑定{ DataSet ds = (DataSet)Cache["缓存名称"]; StringBuilder str = new StringBuilder(); str.Append("select top 8 * from tb where ......");//sql 语句 if (ds == null) { DataSet cds = Base.GetDataSet(str.ToString(), "t1");//通过方法获得Dataset //存入Cache HttpContext.Current.Cache.Insert("缓存名称", cds, null, DateTime.Now.AddHours(4), System.Web.Caching.Cache.NoSlidingExpiration); ...... }} WebService安全性问题? 有时刷新有时不刷新?这是神马情况? 求教一个比较难的正则表达式 时间截取问题 导出到EXCEL时出现问题 请问URLWRITER实现伪静态时如何不设置IIS就可以使用 使用水晶报表参数字段,出现"丢失参数字段当前值"错误,请高手多指教 System.IO.DirectoryNotFoundException: 未找到路径“e:\”的一部分。 关于父子关系的汇总计算问题,急盼 关于登录和AD结合的问题 一个很常规却很奇怪的问题??? AjaxControlToolkit 2.0怎么使用
{
Cache cache = System.Web.HttpContext.Current.Cache;
object cacheItem = cache.Get(cacheKey) as DataTable;
if (cacheItem == null)
{
DataSet ds = new DataSet();
//这里写读取数据的代码
cacheItem = ds.Tables[0];
cache.Insert(cacheKey, cacheItem, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10));
}
return (DataTable)cacheItem;
}
虽然Cache可以
老大,我这边的Cache cache 属性后面跟不了Get 用Cache可以直接跟, string StrSql语句用在哪`
Cache缓存不太懂` 能不能讲再清楚点,` 怎么调CacheDataTable函数
你引用了using System.Web.Caching没有?
你有经常查询1万条数据然后返回给界面层处理的代码吗?没有就根本不应该去缓存1万条数据。比如经常要查询某个用户的信息,那么应该把查询过的用户的信息缓存起来,然后就直接使用查询过的结果。而不是前台刚刚要查询1个用户信息时就去缓存所有用户的信息。缓存的单元通常是每一个业务逻辑查询功能!比如要查询某个机构在2个月内买过的所有股票的最近3个交易日的价格的变动的最高和最低值,那么这个查询得到的是一个报告。这个查询如果可能在网站中复用(因为关注这机构的用户很多,它们可能从不同的地方同时访问这个查询),就应该把查询结果(内存中的报表数据源需绑定的强类型数据集合)缓存起来,下一次数据源再调用查询业务逻辑功能时,业务逻辑处理方法就会首先自动将查询参数生成key并且到缓存中去看看有没有数据,如果没有才会去访问数据库,访问完会将结果按照key为关键字保存到缓存系统中供下次复用。所以一个缓存机制是非常简单的,只要开发一次,然后每一个业务逻辑功能只要调用缓存机制的2、3个api方法就行了。当我们要暂时停掉缓存,只要为web.config中的参数设置一下,即刻生效。
public void DlBind() //初始化绑定
{
DataSet ds = (DataSet)Cache["缓存名称"];
StringBuilder str = new StringBuilder();
str.Append("select top 8 * from tb where ......");//sql 语句
if (ds == null)
{
DataSet cds = Base.GetDataSet(str.ToString(), "t1");//通过方法获得Dataset
//存入Cache
HttpContext.Current.Cache.Insert("缓存名称", cds, null, DateTime.Now.AddHours(4), System.Web.Caching.Cache.NoSlidingExpiration);
......
}
}