【发布时间】:2015-11-17 19:55:55
【问题描述】:
我仍在使用 ASP 和 C# 开发我的第一个项目。一切正常。唯一的问题是,我的页面有点慢。于是我开始优化我的页面的性能。
在改进了一些东西(连接池,SQL 语句,...)之后,一个交叉的时间计算出现了。我希望它返回实际的日历周:
CultureInfo myCI = new CultureInfo("en-US");
System.Globalization.Calendar myCal = myCI.Calendar;
CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
currentWeek = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
现在我想知道我的页面计算一次并将其写入会话是否更快:
Session["WeekToAnalyze"] = currentWeek;
然后在我下面的所有页面上阅读它:
currentWeek= Convert.ToInt32(Session["WeekToAnalyze"].ToString());
或者在每个页面上重新计算它是否更快?
【问题讨论】:
-
而不是
CultureInfo myCI = new CultureInfo("en-US");使用CultureInfo myCI = CultureInfo.GetCultureInfo("en-US");:) -
我怀疑时间上的差异不会太大,搜索其他区域是否有大延迟,页面本身,您加载的脚本,您加载的图像,页面结构。 . 媒体上的缓存... 最后,您需要创建时间来读取和比较两者的实际时间。
-
将值存储到会话并从中读取无论如何都是一个不错的设计,因为您不太可能在每次页面加载时重新计算该值。
-
这不是应用程序的瓶颈。不要去更改随机的代码位。您需要进行基准测试,然后改进已被证明运行缓慢的部分。
-
如果有的话,可能会有性能下降,尽管可以忽略不计。为什么?很简单,从会话状态中检索项目将导致向状态服务器(Windows 服务或 SQL 服务器数据库或任何其他)发出请求。 IE。有一些资源访问。至于计算,应该是相当快的。
标签: c# asp.net session session-variables