利用XML缓存数据达到缓解数据库服务器压力的代码利用片段

/// <summary>
         /// 建立临时数据目录
         /// </summary>
         /// <param name="pathURL"></param>
         private static void GreatUserpath( string pathURL)
        {
             string path = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + pathURL + "/");
             if (Directory.Exists(path) == false)
            {
                Directory.CreateDirectory(path);
            }
        }


         /// <summary>
         /// 获得用户临时存储数据
         /// </summary>
         /// <param name="p_UserID"></param>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <returns></returns>
         public static System.Data.DataSet GetUsertempdata( int p_UserID, string dataName, int pageIndex)
        {
             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + p_UserID.ToString() + "/"+dataName+ "/"+pageIndex.ToString()+ ".asp");
            GreatUserpath(p_UserID.ToString());
            GreatUserpath(p_UserID.ToString()+ "/"+dataName);
             if (File.Exists(filePath) == true)
            {
                DataSet ds = new DataSet();
                ds.ReadXml(filePath);
                 return ds;
            }
             else
            {
                 return null;
            }
        }

         /// <summary>
         /// 获得共有临时存储数据
         /// </summary>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <returns></returns>
         public static System.Data.DataSet GetCommontempdata( string dataName, int pageIndex)
        {

             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + "Common/"+ dataName + "/" + pageIndex.ToString() + ".asp");
            GreatUserpath( "Common");
            GreatUserpath( "Common" + "/" + dataName);
             if (File.Exists(filePath) == true)
            {
                DataSet ds = new DataSet();
                ds.ReadXml(filePath);
                 return ds;
            }
             else
            {
                 return null;
            }
        }

         /// <summary>
         /// 设置用户临时数据
         /// </summary>
         /// <param name="p_UserID"></param>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <param name="data"></param>
         public static void SetUsertempdata( int p_UserID, string dataName, int pageIndex,DataSet data)
        {
            GreatUserpath(p_UserID.ToString());
            GreatUserpath(p_UserID.ToString() + "/" + dataName);
             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + p_UserID.ToString() + "/" + dataName + "/" + pageIndex.ToString() + ".asp");
             if (File.Exists(filePath) == true)
            {
                File.Delete(filePath);
            }
             if (data != null & data.Tables.Count > 0)
            {
                 if (data.Tables[0].Rows.Count > 0)
                {
                    XmlDataDocument doc = new XmlDataDocument(data);
                    doc.Save(filePath);
                }
            }
            
             //return ds;
        }

         /// <summary>
         /// 设置共有临时数据
         /// </summary>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <param name="data"></param>
         public static void SetCommontempdata( string dataName, int pageIndex,DataSet data)
        {
            GreatUserpath( "Common");
            GreatUserpath( "Common"+ "/"+dataName);
             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + "Common" + "/" + dataName + "/" + pageIndex.ToString() + ".asp");
            
             if (File.Exists(filePath) == true)
            {
                File.Delete(filePath);
            }
             if (data != null & data.Tables.Count>0)
            {
                 if (data.Tables[0].Rows.Count > 0)
                {
                    XmlDataDocument doc = new XmlDataDocument(data);
                    doc.Save(filePath);
                }
            }
        }

         /// <summary>
         /// 删除用户临时数据*数据库有变更时调用
         /// </summary>
         /// <param name="p_UserID"></param>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <param name="data"></param>
         public static void DelUsertempdata( int p_UserID, string dataName)
        {
            GreatUserpath(p_UserID.ToString());
             //GreatUserpath(p_UserID.ToString() + "/" + dataName);
             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + p_UserID.ToString() + "/" + dataName + "/");
             if (System.IO.Directory.Exists(filePath) == true)
            {
                 //File.Delete(filePath);
                Directory.Delete(filePath, true);
            }
        }

         /// <summary>
         /// 删除共有临时数据*数据库有变更时调用
         /// </summary>
         /// <param name="dataName"></param>
         /// <param name="pageIndex"></param>
         /// <param name="data"></param>
         public static void SetCommontempdata( string dataName)
        {
            GreatUserpath( "Common");
             string filePath = HttpContext.Current.Server.MapPath(YOYOConfiguration.TempDataPath + "Common" + "/" + dataName + "/" );
             if (System.IO.Directory.Exists(filePath) == true)
            {
                 //File.Delete(filePath);
                Directory.Delete(filePath, true);
            }
        }

 
调用方法:
/// <summary>
         /// 通过用户ID 获取英雄集
         /// </summary>
         /// <param name="p_UserID">用户ID</param>
         /// <returns></returns>
         public DataSet GetHerosByUserID( int p_UserID)
        {
            DataSet ds = new DataSet();
            ds = GetUsertempdata(p_UserID, "heros", 0);
             if (ds == null)
            {
                 string procName = "UP_heroinfo_GetList";

                SqlDataAccess sqlhelper = new SqlDataAccess(YOYOConfiguration.ConnectionString);
                 object[] parameters = new object[] { p_UserID };
                SqlResult resu = new SqlResult();
                 try
                {
                    resu = sqlhelper.CallProcedure(procName, parameters);
                    ds = resu.dataSet;
                }
                 catch (System.Exception ex)
                {
                    YOYOWorld.Log.LogWritor.Write(ex.Source, ex.Message, EventLogEntryType.Error);
                }
                YOYOWorld.Common.Tool.SetUsertempdata(p_UserID, "heros", 0, ds);
            }
             return ds;
        }

 
当数据库更改时调用
DEL方法清除缓存数据
 
还有需要改进的地方,不过也是一种减少数据库压力的一种好方法

你可能感兴趣的:(xml,职场,缓存,休闲)