关于缓存使用的一点理解

8/10/2015来源:ASP.NET技巧人气:1627

关于缓存使用的一点理解

首先来说下缓存的优点:缓存是把数据放在内存中,需要时从内存中取出来(和从硬盘上取相比,从内存中取速度会快很多) 提示了速度

缓存的分类:页面缓存 数据源缓存(永久 和 有时限的) 依赖项缓存 数据库依赖缓存

页面缓存:

实现代码

他会将整个页面缓存 然后在管线中第7个事件和第8个事件之间判断要访问的页面是否有缓存 是的话直接返回缓存页面 结束管线 不用走完管线这样大大的提升了速度

注意点:只能在大部分时候不变的页面上用到这个,在变化较大的页面上不能用页面缓存(尤其是追求准确性的情况下)

数据源缓存:比如将显示的列表的数据放进cache中

下面是代码

在什么时候用到:在一个页面中 这个数据源不常改动 且需要多次从数据库中提取 其他数据源相对来说需要变化 这时候就用到此缓存

第一次启动的时候application_start()里存入缓存 以后这个数据源 就直接从缓存中取 (需要改动显示时后台将改动相关数据时自动重新写入缓存)

上面时永久缓存 下面是有时间限制缓存的创建

有时间限制的缓存感觉跟上面的永久缓存相差不大 不过比较适用于数据变换频率中等的数据源

依赖项缓存:2中依赖项 一种依赖文件,一种是依赖数据库

依赖文件的通常是依赖配置文件啊 或者依赖xml文件(因为就是从xml文件中读取的数据)

只有被依赖的文件更改是 缓存才会释放

如依赖一个xml文件 并从xml文件中取数据 只有xml变更时(增加或者减少) 缓存会释放 并重新读取数据放入缓存

这样看似很方便 你变了我也变 避免了多次无意义的从xml文件取数据,但是要想想为啥系统会知道你变了 肯定在不停的监视 这样可能更浪费效率

数据库依赖也是一样 不停在监视数据库 直到数据库改变通知程序 为了方便而浪费了效率

下面是代码

文件依赖项

数据库依赖项

数据库缓存依赖1、数据库缓存依赖-S服务器名称 -E集成身份验证 -ed启动 -d数据库名称 -et指定缓冲依赖的表名 -t表名在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录)aspnet_regsql -S . -E -ed -d bjhksj -et -t HKSJ_USERS

aspnet_regiis

缓存依赖禁用该数据库aspnet_regsql -S . -E -dd -d bjhksj

2、依赖于数据库的web.config配置<system.web> <caching> <sqlCacheDependency enabled="true"> <databases> <add name="HeimaRegulation"(依赖数据库的名字) connectionStringName="connectionString"(依赖连接字符串的名字) pollTime="500"/> </databases> </sqlCacheDependency> </caching>3写入缓存3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("HeimaRegulation", "Branch"); Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);