页面输出缓存
当用户访问页面时,整个页面将会被服务器保存在内存中,这样就对页面进行了缓存。
当用户再次访问该页,页面不会再次执行数据操作,页面首先会检查服务器中是否存在缓
存,如果缓存存在,则直接从缓存中获取页面信息,如果页面不存在,则创建缓存。
其实我想问的是第二次打开我的首页我的load加载事件难道不执行了,直接去访问缓存?

解决方案 »

  1.   

    从内存中读取数据要比从数据库中获取数据要来得快我的做法是,只要后台更新了数据再去清缓存,读取是判断后再读取        public bool Delete(string cCusCode)
            {
                string _cond = " Where cCusCode=@cCusCode ";
                ba_customerinfo _param = new ba_customerinfo();
                _param.cCusCode = cCusCode;
                if (ic.Delete(_cond, _param) > 0)
                {
                    clearCache2();
                    return true;
                }
                return false;
            }        public DataTable GetInfoList()
            {
                DataTable dt = cache.RetrieveObject(_index_cache_path2) as DataTable;
                if (dt == null)
                {
                    string query = "Select * From BA_Customer";
                    dt = dbt.ExecuteTable(query, null);
                    dt.PrimaryKey = new DataColumn[] { dt.Columns["cCusCode"] };
                    cache.AddObject(_index_cache_path2, dt);
                }
                return dt;
            }
      

  2.   

    “其实我想问的是第二次打开我的首页我的load加载事件难道不执行了,直接去访问缓存?”是这样的,不执行。
      

  3.   

    可以把他理解是asp的 Application(服务器全局变量)
      

  4.   

    和load无关,只和你读写数据有关
      

  5.   

    也可以理解为Session之上的Session,就是说不管哪个客户端看到的都是同一个变量只要有一个客户端读取了这个信息,我们就将这些信息放到这个全局变量中记录下来,然后给后续的客户端访问,而不是每个客户端都直接从数据库中去获取数据(访问效率会降低),一般用于网站首页(访问量比较重)及一些常规不变的信息(如栏目\地区..)
      

  6.   

    服务器缓存的是html。
    所以 其实我想问的是第二次打开我的首页我的load加载事件难道不执行了,直接去访问缓存?当缓存有效时,服务器直接返回缓存中的html给客户端
      

  7.   

    <%@ OutputCache Duration="120"
    VaryByParam="none" VaryByCustom="browser" VaryByControl="TextBox1"%>
    上面的时间如果不加会怎么样 将服务器控件TextBox1 的每个不同的值进行缓存处理
    还有困扰我的是如何去判断缓存存在呢
    第一次肯定是没有缓存的 所以他会load事件
    第二次有缓存我的load事件就不执行直接调用缓存来显示是吗
    如果是 页面部分缓存那么我VaryByControl="TextBox1" 这样我值是如果是1那么他会生成缓存是1的查询记录
    如果是2生成缓存是2的记录 当第二次或者以后textbox值是1或者2的时候直接调用缓存了吗 
    感谢各位 不知道我说的对不对 
    现在用的是公司的框架 如果莫一天的离开了这个框架那就意味着我……所以只有不断成长才是恒道理
    楼上我刚刚说的给点意见啊 谢谢
      

  8.   

    你是指我的说法有误是吗?
    <%@ OutputCache Duration="9999999" VaryByParam="None" %>
    我上述的说法是指默认情况下,并未考虑到片段缓存或缓存后替换相关技术。像上述的情况下,缓存在内存中的就是html
    如果不是html的话
     protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write(System.DateTime.Now.ToString());
            }
    这样的事件岂不是每次都要执行?
      

  9.   


    http://msdn.microsoft.com/zh-cn/library/ms178597(v=vs.100).aspx输出缓存是一类针服务器应用程序的典型缓存。利用输出缓存,可以存储呈现的 HTML。提供存储的 HTML 以响应相同页的后续请求
      

  10.   

    ASP.NET 使用两种基本的缓存机制来提供缓存功能。 第一种机制是应用程序缓存,它允许您缓存所生成的数据,如 DataSet 对象或自定义报表业务对象。 第二种机制是页输出缓存,它保存页处理输出,并在用户再次请求该页时,重用所保存的输出,而不是再次处理该页。 这里说的是第一种缓存,第二种缓存是浏览器缓存,只能是单个个体,而不是全体用户页输出缓存是你脱离了你本机,在其它机子上访问还是会读数据库的,应用程序缓存就是说第一台机子访问后,其它的机子再访问就不用去读数据库了,直接调取保存好的DataSet ,读取DataSet 也是会再次加载pageload的
      

  11.   

    有两种缓存。。服务器端session、、客户端cookie