zoukankan      html  css  js  c++  java
  • 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);

          

          

     

         

  • 相关阅读:
    面试题9:斐波那契数列
    面试题5:从尾到头打印链表
    面试题4:替换空格
    AOP
    (转)父类与子类之间变量和方法的调用
    悲观锁和乐观锁
    Java实现冒泡排序、折半查找
    (转载)Java 自动装箱与拆箱、equals和==的比较
    编程之美:数组分割
    windows下perl的安装和脚本的运行
  • 原文地址:https://www.cnblogs.com/hanwenhuazuibang/p/2983748.html
Copyright © 2011-2022 走看看