我刚刚从以前的开发人员中选择了一个项目,我在他的代码中注意到他将数据加载到母版页中的会话变量中,并将其存储到母版页的局部变量中,以便使用它。
即:
母版页中的:
public class Master_Page
{
public string some_data = string.empty;
public void Page_Load()
{
some_data = Session["some_data"];
}
}
public class Inherted_Page : Page
{
public void some_method()
{
Response.Write( ((Master_Page)Master).some_data );
}
}
我想知道是否因为访问会话变量需要比局部变量更长的时间? 我想知道请求字符串是否相同?
答案 0 :(得分:1)
访问Session对象比访问实例变量要慢,因为它需要哈希表查找。
我相信Request对象也使用哈希表。
话虽如此,性能提升相当低,除非你做了很多,因为哈希表查找往往是O(1),特别是对于会话或请求的典型小尺寸(我怀疑计算密钥的哈希可能需要比查找本身更长的时间。)
答案 1 :(得分:0)
如果您不需要此数据来保持并跟随您的用户访问整个会话,但只需要页面,只需一次加载,那么会话数据就会很糟糕,而且存储值的速度也会较慢,而且可能会导致错误。
因此,如果您只需要将some_data用于此页面生活,只需将数据从母版页传输到子页面,那么您必须使用页面上的变量。
如果您的会话需要一些跟随您的用户的变量,那么您可以使用会话数据。