Asp.net常用缓存技术简介

     cpu像个老牛一样,干活非常快(执行速度非常快),而硬盘的读写速度非常慢,像个蜗牛一样,我们写的应用程序说白了就是cpu执行的指令的集合。如果没有缓存的话,cpu就会不停的等待,效率就会变得非常低,而我们的内存每秒钟能够读写执行几千条,我们磁盘上的指令就可以加载在内存中,内存将数据准备好后送给cpu执行。如果内存中没有指令了那么就从磁盘当中读取,这样就解决了cpu执行效率低的问题。

     缓存是一种用空间换取时间的技术,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取,它是改进网站性能的第一个手段,Asp.net缓存主要分为:页面缓存,数据源缓存,数据缓存。灵活性从高到低依次为数据缓存,数据源缓存,页面缓存。

     1.页面缓存:

       给页面添加<%@ OutputCache Duration="5" VaryByParam="*"  %>

       Duration表示哈U内存事件,以秒为单位,超出后缓存失效,再次生成以后还会缓存5秒。

       这样就可以启用页面缓存,整个页面的内容都会被缓存,页面中的asp.net,数据等在缓存期间不会被运行,而是直接输出缓存的内容。

       注意,这个缓存是在服务器端而不是在客户端,用HttpWacth也能看出服务器返回的响应。常用语帖子,新闻,视频之类的页面缓存。它在整个Aspnet应用程序生命周期第七个事件完了之后就不再继续往下执行了。

     2.数据源缓存

       设定ObejectDataSource的CacheDuration(缓存时间:秒),EnableCaching=true,这样每隔CacheDuration指定的时间段才调用SelectMode执行的方法类执行数据库查询,其它时候都是直接返回内存的数据。在缓存期间,绑定控件向ObjectDataSource要数据,ObejectDataSource直接将缓存的数据返回给控件。不要去向TypeName指向的类要数据。

    3.开发人员自定义缓存

      if(!IsPostBack)

       {

          //在缓存中写入数据

          Cache.Insert("de","sssss");//这就是在缓存中写东西了

         //缓存中的内容是不会丢失的,只有当进程关闭了cache才会消失释放,在此期间,线程是安全的。

         //最后一个参数是滑动过期时间,如果有过期时间的限制,那么滑动过期时间一定要设置为Zero.

         Cache.Insert("de","sssssssss",null,DataTime().Now,AddSencond(10)TimeSpan.Zero);

                   //滑动窗口机制

                 Cache.Insert("de", "ssssss", null, DateTime.MaxValue, new TimeSpan(0,0,3)); 

        }

    4.数据库缓存依赖:

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

         依赖于数据库的web.config配置
         <system.web>
         <caching>
         <sqlCacheDependency enabled="true">
             <databases>
              <add name="BookRegulation" connectionStringName="connectionString"  pollTime="500"/>
            </databases>
       </sqlCacheDependency>
      </caching>

        在page页面中:

        //当依赖的表发生变化时,缓存失效

        System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("BookRegulation", "Branch");
        Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);

      

      

 

     

原文地址:https://www.cnblogs.com/hanwenhuazuibang/p/2983748.html