在ASP.NET中调用和读取会话对象需要多少资源?
我想知道像以下示例那样调用会话对象有多浪费:在ASP.NET中调用和读取会话对象需要多少资源?,asp.net,performance,optimization,Asp.net,Performance,Optimization,我想知道像以下示例那样调用会话对象有多浪费: string test = string.Empty; for (int i = 0; i < 1000; i++) { test += Session["test"].ToString() + ","; } 而不是像这样: string test = string.Empty; string test_session_value = Session["test"].ToString(); for (int i = 0; i <
string test = string.Empty;
for (int i = 0; i < 1000; i++)
{
test += Session["test"].ToString() + ",";
}
而不是像这样:
string test = string.Empty;
string test_session_value = Session["test"].ToString();
for (int i = 0; i < 1000; i++)
{
test += test_session_value + ",";
}
这就是调用HttpSessionState对象并多次从中读取会话,而不是尽可能少地读取
是否有明显的性能损失?开发人员在使用HttpSessionState对象时应该注意多少?如果会话状态存储在IIS中,那么它将创建庞大的IIS 如果会话状态存储在Sql server中,则不同应用程序域之间的数据传输将耗费大量时间 优点: 1.您可以跨多台计算机访问相同的会话状态。 2.重新加载应用程序池后,相同的会话状态可用 缺点: 1.比进程模式慢。 2.会话状态中的所有对象都必须是可序列化的。
3.由于会话变量可以动态创建、随时使用,并且不需要开发人员显式地处理它们,因此过度使用会话变量可能会导致非常不可读和不可维护的代码。如果会话状态存储在IIS中,则会创建大量的IIS 如果会话状态存储在Sql server中,则不同应用程序域之间的数据传输将耗费大量时间 优点: 1.您可以跨多台计算机访问相同的会话状态。 2.重新加载应用程序池后,相同的会话状态可用 缺点: 1.比进程模式慢。 2.会话状态中的所有对象都必须是可序列化的。
3.由于会话变量可以动态创建、随时使用,并且不需要开发人员显式地处理它们,因此过度使用会话变量可能会导致代码非常不可读和不可维护。页面加载时会话完全可读,页面卸载时会保存会话。因此,序列化和取消序列化在每页只发生一次 会话将数据保存/保留在字典对象中 所以当你做这个的时候
string test = string.Empty;
for (int i = 0; i < 1000; i++)
{
test += Session["test"].ToString() + ",";
}
是否有任何性能处罚
在现实生活中,我不认为您每页调用1000次会话变量,所以它不会明显延迟会话。值得注意的是,在页面加载和卸载之前,会话将锁定所有用户
相对:当页面加载时,会话是完全读卡器,当页面卸载时,会话被保存。因此,序列化和取消序列化在每页只发生一次 会话将数据保存/保留在字典对象中 所以当你做这个的时候
string test = string.Empty;
for (int i = 0; i < 1000; i++)
{
test += Session["test"].ToString() + ",";
}
是否有任何性能处罚
在现实生活中,我不认为您每页调用1000次会话变量,所以它不会明显延迟会话。值得注意的是,在页面加载和卸载之前,会话将锁定所有用户
亲属: