LS的兄弟代码上说首次访问的时候才设置cache缓存,但是当cache缓存过期呢?那就只会永远访问不到缓存了(除非你是首次访问);cache缓存的话,你需要的时候就可以使用啊,insert可以设置缓存过期时间的,而且insert里面可以设置缓存依赖,依赖可以设置时文件依赖(当文件修改的时候,自动清除缓存)页面依赖(当服务器某个页面修改后,自动清除缓存),当然,缓存依赖不能扩展到你的操作上,比如你添加修改了数据,缓存依赖就检测不到,不过,这没问题,编写一个专门清除缓存的函数,把它写在你修改数据的代码里面,每当修改数据的时候清除相应的缓存。
另,asp.net里面有很多缓存机制,总的来说就分:客户端缓存和服务端缓存:客户端缓存没什么好说的,在<%@ OutputCache Duration="60" VaryByParam="None" %>设置,也可以在后台
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);设置;服务端缓存就非常的多:cache是最常见的,还有
专门的服务端缓存,写在页面上:<%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>
后台:Response.Cache.SetCacheability(HttpCacheability.Server);
还有就是重写asp.net运行周期中的stream输出html流,把它写到数据库或者cache都行
看你怎么用咯
if(!ispostback)
{
if(Cache["dt"] !=null)
{
xx.DataSource=(Datatable)Cache["dt"];
}
else
{
xx.DataSource=dt;
}
}
有系统级缓存和用户缓别的缓存,系统级缓存在Application start时就可以加载,用户级在用户登录时可以加载
考虑并发和超时问题可以做一个cache管理器来管理这些缓存数据的存取之类的!
object obj = Utility.DataCache.GetCache("mallclasslist");
if (obj == null)
{
MallClass bll = new MallClass();
classList = bll.GetList(null);
Utility.DataCache.SetCache("mallclasslist", classList, DateTime.UtcNow.AddMinutes(20), System.Web.Caching.Cache.NoSlidingExpiration);
}
else
{
classList = obj as List<MallClassInfo>;
}