025-缓存Cache

Posted 灬伊天?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了025-缓存Cache相关的知识,希望对你有一定的参考价值。

如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差。而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能。这样无论有多少人访问都只访问一次数据库,数据库压力不变。
缓存(Cache)是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取。比如CPU二级缓存、内存、windows文件读取缓存。
缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据(数据库)中数据一致,则需要在慢速数据(数据库)中对应的数据发生变化的时候,清除缓存中相应的数据。
缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样。ASP.net缓存主要分为:页面缓存(中庸)、数据源缓存(最不灵活的)、数据缓存(灵活)这三种主要类型。

1.缓存可以提高数据访问性能,原因是缓存的数据都在内存中。避免了磁盘I/O操作,或者数据库的网络连接等。
2.缓存的数据,必须有一定的过期策略,否则实际的数据发生改变后,对应的缓存还是旧数据,就造成了数据不一致的问题。
3.什么情况下才用缓存?
1>访问的数据不会发生改变,或者是很少发生变化。
2>数据频繁被访问。

直接使用Cache

1>直接使用Cache["content"],缓存与Session不同,所有用户都可以共享。永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉。
2>设置绝对过期日期。Cache.Insert("nowTime", DateTime.Now, null, DateTime.Now.AddSeconds(7), TimeSpan.Zero);
3>设置滑动过期日期: Cache.Insert("nowTime", DateTime.Now, null, DateTime.MaxValue, TimeSpan.FromSeconds(5));

if (Cache["nowTime"] == null)
{
Cache.Insert("nowTime", DateTime.Now, null, DateTime.MaxValue, TimeSpan.FromSeconds(5));
}
else
{
Response.Write("缓存中的时间:" + Cache["nowTime"]);
}
----------------------------------------------------------

if (Cache["time"] == null)
{
Cache["time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
Response.Write(Cache["time"]);
----------------------------------------------------------
if (Cache["time"] == null)
{
Cache.Insert("time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
}
Response.Write(Cache["time"]);
----------------------------------------------------------
if (Cache["time"] == null)
{
Cache.Insert("time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), null, DateTime.MaxValue, TimeSpan.FromSeconds(5));
}
Response.Write(Cache["time"]);
----------------------------------------------------------

页面缓存

 

以上是关于025-缓存Cache的主要内容,如果未能解决你的问题,请参考以下文章

Flask-Cache 怎么缓存动态内容

System.Web.Caching.Cache类 缓存 各种缓存依赖

springboot开启Cache缓存

java web项目,如何获得cache缓存中的数据,急用!

完整SpringBoot Cache整合redis缓存

Cache缓存