一个web页面由多个 用户控件(User Controls)组成.有些用户控件显示的内容任何人浏览都一样(大都为统计数据包括图表,消耗大量服务器资源)
有些用户控件显示的内容为个人信息(资源占用比较小)请问如何才能减轻服务器压力?
谢谢!页面缓存?以前还听说过局部缓存?cache?……注:请不要只给超链接,我不能访问其他网站,麻烦把内容帖出来。
有些用户控件显示的内容为个人信息(资源占用比较小)请问如何才能减轻服务器压力?
谢谢!页面缓存?以前还听说过局部缓存?cache?……注:请不要只给超链接,我不能访问其他网站,麻烦把内容帖出来。
解决方案 »
- ASP.NET 2.0 中如何设置报表的格式?
- ((TextBox)gr.Cells[1].Controls[0]).Text.Trim();为什么取到的是以前的值?而不是改过之后的值?
- 求一sql语句
- datagrid的超链接( 由于带多个参数,已经转换为模板列)中,怎样把参数传递弹出固定大小的窗口?
- asp.net有没有像WinForm的DataGridView控件在表格录入数据的第三方控件
- 为什么我写的发送邮件程序发不出邮件去?
- 【老问题】session传递
- FCKEDITOR 新的文件夹不能上传图片
- 请问如何在网页中通过按钮控件打开Autocad并将客户端数据一起传到CAD中?急!!
- 你们谁做水晶报表成功过?我怎么一直就没有成功呢!半年了!!!专家们请进
- 打开的链接是一个固定文件夹
- 关于DropDownList1_SelectedIndexChanged一个难以理解的问题。。。。
同学们可以做一个简单的个人网站用来找工作
http: // www.hi876.com 你们也看看吧
int ClassID,
int BarID,
string T_PostUserName,
int ShowType,
bool IsCache
)
{
SqlPersistenceContainer spc = new SqlPersistenceContainer( CMPConfigurationHandler.ContainerMaps["GetTopicListCount"] );
TopicSet MySet = new TopicSet();
MySet.ClassID = ClassID;
MySet.BarID = BarID;
MySet.T_PostUserName = T_PostUserName;
MySet.ShowType = ShowType;
if( IsCache )
{
string CacheKeyStr = "Count" + ClassID.ToString() + BarID.ToString() + ShowType.ToString() ;
if ( System.Web.HttpContext.Current.Cache[ CacheKeyStr ] == null )
{
spc.Select( MySet ); string nCount = MySet.ResultSet.Tables[0].Rows[0][0].ToString().Trim();
System.Web.HttpContext.Current.Cache[ CacheKeyStr ] = int.Parse( MySet.ResultSet.Tables[0].Rows[0][0].ToString() );
}
return (int)System.Web.HttpContext.Current.Cache[ CacheKeyStr ];
}
else
{
spc.Select( MySet ); string nCount = MySet.ResultSet.Tables[0].Rows[0][0].ToString().Trim();
return int.Parse( nCount );
}
}
看看这个,有些东西放到Cache里.另外,几点:
1,生成静态
2,关闭不用的ViewState
3,可以使用页面的缓存.
4,数据库的索引做好优化.
归根就是代码和数据结构的好坏.
/// <summary>
/// 利用反射设置缓存。
/// </summary>
/// <param name="key"></param>
public static System.Data.DataTable setCache(string key)
{
System.Data.DataTable dt=new DataTable();
Type t = Type.GetType("DreamZone.Core.sysCollection");
MethodInfo method = t.GetMethod(key);
dt=(System.Data.DataTable)method.Invoke(null,null);
setCache(key,dt);
return dt;
}
/// <summary>
/// 直接利用key和dt设置。
/// </summary>
/// <param name="key"></param>
/// <param name="dt"></param>
/// <returns></returns>
public static System.Data.DataTable setCache(string key,System.Data.DataTable dt)
{
//HttpContext.Current.Cache.Add(key,dt,null,DateTime.MaxValue,new TimeSpan(0,0,1,0),CacheItemPriority.High,null);
HttpContext.Current.Cache.Add(key,dt,null,DateTime.MaxValue,new TimeSpan(0,0,1,0),CacheItemPriority.High,null);
return dt;
}
/// <summary>
/// 从缓存中获取,如果为空设置缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static System.Data.DataTable getCache(string key)
{
System.Data.DataTable dt=new DataTable();
if(HttpContext.Current.Cache[key]!=null)
{
dt=(System.Data.DataTable)HttpContext.Current.Cache[key];
}
else
{
dt= setCache(key);
}
return dt;
}
/// <summary>
/// 清空缓存
/// </summary>
/// <param name="key"></param>
public static void clearCache(string key)
{
HttpContext.Current.Cache.Remove(key);
}
#endregion
用轻量级的htmlcontrols
把生成图形的数据写入Cache中