我正在开发一个存在性能问题的Web应用程序。我正努力为此付出最大努力。我做了很多改变,这也改善了我的表现。我有一个问题:
我可以将所有AppSettings值保存在Application_Start事件中的Global.asax文件中吗?下面是我的Global.asax文件代码:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
// Setting all the common application level variables.
Application["ConnectionString"] = ConfigurationManager.ConnectionStrings["UtilityServiceMISConstr"].ConnectionString;
Application["SendErrorMail"] = ConfigurationManager.AppSettings["SendErrorMail"];
Application["SendErrorMailTo"] = ConfigurationManager.AppSettings["SendErrorMailTo"];
Application["LOGINURL"] = ConfigurationManager.AppSettings["LOGINURL"];
Application["ExpirePasswordDays"] = ConfigurationManager.AppSettings["ExpirePasswordDays"];
Application["FromMailID"] = ConfigurationManager.AppSettings["FromMailID"];
Application["BCCMailID"] = ConfigurationManager.AppSettings["BCCMailID"];
Application["CCMailID"] = ConfigurationManager.AppSettings["CCMailID"];
Application["IsSPLogging"] = ConfigurationManager.AppSettings["IsSPLogging"];
Application["DefaultReminderCount"] = ConfigurationManager.AppSettings["DefaultReminderCount"];
Application["PageSize"] = ConfigurationManager.AppSettings["PageSize"];
Application["SendSettlementMail"] = ConfigurationManager.AppSettings["SendSettlementMail"];
Application["SendSettlementMailTo"] = ConfigurationManager.AppSettings["SendSettlementMailTo"];
Application["Settlement"] = ConfigurationManager.AppSettings["Settlement"];
Application["AllowedLoginAttempts"] = ConfigurationManager.AppSettings["AllowedLoginAttempts"];
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
}
这是一个好习惯吗?如果没有,那么最好的方法是存储我的连接字符串吗?
答案 0 :(得分:1)
最近我接受了采访。在那里我被问到一个问题,即存储连接字符串的最佳方式,而不是一次又一次地读取web.config文件..?
面试官不知道所有事情,无论他们声称拥有什么资历。您的应用程序配置将被读取once, on application startup,因此每次调用时,ConfigurationManager.AppSettings[]
索引器都不会转到配置文件。
所以不,使用你显示的代码没有任何改进。
答案 1 :(得分:1)
不,您的瓶颈不存在,并且在Web.Config
内保留连接字符串等配置元素,您可以更改应用程序的配置,而无需重新编译或搞乱任何其他内容。
将连接字符串存储在Web.Config
中还有其他好处,因为您可以加密整个连接字符串而不是以纯文本格式存储...它为您的应用程序添加了另一层安全性
性能问题可能由多种因素引起......这里是一些最常见的罪魁祸首:
不利用外部资源的捆绑和缩小意味着浏览器额外往返加载您的网站......
不利用脚本,CSS和图像的缓存是另一个,确保缓存静态内容。
async
允许IIS将请求移交给另一个线程,以便它可以为其他尝试连接到您网站的客户端提供服务。列表继续,而不是担心启动时发生了什么,尝试分析您的应用程序,看看哪些电话花了太长时间才完成。