ViewState 优化方案

protected override object LoadPageStateFromPersistenceMedium()
{
    var viewStateID = (string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second;
    var stateStr = (string)Cache[viewStateID];
    if (stateStr == null)
    {
        var fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
        stateStr = File.ReadAllText(fn);
    }
    return new ObjectStateFormatter().Deserialize(stateStr);
}

protected override void SavePageStateToPersistenceMedium(object state)
{
    var value = new ObjectStateFormatter().Serialize(state);
    var viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码
    var fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
    ThreadPool.QueueUserWorkItem(obj => File.WriteAllText(fn, value));
    Cache.Insert(viewStateID, value);
    base.SavePageStateToPersistenceMedium(viewStateID);
}

  

将代码放入Basepage. 然后去处理页面viewstate的存放,文件,或者文件型数据库,或者缓存服务器

posted on 2014-07-31 13:05  西湖浪子  阅读(147)  评论(0)    收藏  举报