我整页缓存default.aspx,里面的 PageLoad里的方法还执行吗,里面的方法转向,还转吗?
 protected void Page_Load(object sender, EventArgs e)
    {
        Response.Redirect("Index.aspx");    }

解决方案 »

  1.   

    缓存页面的page_load是不会执行的,只有postback的脚本可以执行,例如按钮的clickk事件等等,这是因为这部分代码会生成do_post函数js脚本的缘故。default需要转向,而又希望可以缓存,建议使用页面参数试试。因为缓存的建立是区分页面参数的,例如 default.aspx?parm=1 和default.aspx?parm=2 会建立不同的缓存,也许可以利用这个实现缓存加页面跳转。
      

  2.   

    morixing() 说的对,如果缓存存在的话,Page_Load中的事件不会执行。一个请求到IIS,IIS(根据后缀名判断)将该请求传递给CLR,执行事件的顺序是:
    BeginRequest
    AuthenticateRequest
    AuthorizeRequest
    ResolveRequestCache  //是否可以使用先前缓存的页面来解决该请示
    AcquireRequestState
    PreRequestHandlerExecute  //在调用Page的派生类的ProcessRequest方法前发生,而ProcessRequest使页面经过各个阶段的处理,如:Init, Load, ...。所以在调用这个方法之前,如果页面中有缓存,会使用缓存解决请求。没有缓存时才会执行这些事件处理程序PostRequestHandlerExecute
    ...
      

  3.   

    除了设置失效时间=0,我一般还在URL上加上随机字符串,就是不让它缓存,哈哈