如何在一个非常非传统的C#ASP.NET web表单应用程序中减少页面加载时间?
(我已经解决这个问题6个月了,所以如果这个问题有任何地方不符合Stack Overflow的指导原则,请原谅我。不过我很确定我没事。我知道这可能太模糊了,我只是不确定。) 长话短说:我的任务是改进2001年开发的asp.net web应用程序的绝对优势。最初的程序员没有使用单个ASP html对象,而是选择通过Response.Write()打印所有html、javascript和css。所有的.aspx页面实际上都是空白的——所有的事情都是在aspx.cs中完成的 下面是一个我正在使用的示例,以及90%的代码隐藏是什么样子的:如何在一个非常非传统的C#ASP.NET web表单应用程序中减少页面加载时间?,c#,asp.net,.net,performance,webforms,C#,Asp.net,.net,Performance,Webforms,(我已经解决这个问题6个月了,所以如果这个问题有任何地方不符合Stack Overflow的指导原则,请原谅我。不过我很确定我没事。我知道这可能太模糊了,我只是不确定。) 长话短说:我的任务是改进2001年开发的asp.net web应用程序的绝对优势。最初的程序员没有使用单个ASP html对象,而是选择通过Response.Write()打印所有html、javascript和css。所有的.aspx页面实际上都是空白的——所有的事情都是在aspx.cs中完成的 下面是一个我正在使用的示例,
if (Common.IsSuperuser())
{
Response.Write("<div style=\"float:left;padding:5px 5px 5px 25px;\">");
Response.Write("<form action=\"users.aspx?id=" + strUserID + "&siteid=" + thisSite._siteGUID + "\" method=\"post\" style=\"display:inline;\">");
Response.Write("<input type=\"hidden\" name=\"isClearEmpty\" value=\"true\" />");
Response.Write("<input type=\"submit\" name=\"clearEmptyAccounts\" value=\"Clear Empty Users\" />");
Response.Write("</form>");
Response.Write("</div>");
}
if(Common.issupurer())
{
回答。写(“”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
回答。写(“”);
}
请结束我
主要目标之一是减少页面加载时间,目前页面加载时间为4到8秒。但是,当我在page_load()函数的“{”和“}”处设置两个断点时,对于任何给定的.aspx页面,它们之间的时间间隔仅为475ms。其他3500-7500ms来自哪里
根据Chrome的控制台,这段时间只花在等待服务器上。我们在一台服务器上托管了几十个web应用商店(50+),每个商店在其自己的目录中都是自己的ASP.NET应用程序,而且每个商店的管理组件在其各自的商店目录中也是自己的ASP.NET应用程序。每个商店/管理员组合也有自己的Microsoft Access(是的,您读得对)数据库。坦率地说,这是疯狂的
更重要的是,实际的存储应用程序加载得很好,但管理端应用程序的加载时间总是超过5s。在管理应用程序中,我们也经常收到明文响应“服务器太忙”,但在客户端存储中却从未收到过。(字面上没有其他信息,只是一个空白的白色HTML页面,上面写着“服务器太忙”)
我们的商店由第三方托管在一个虚拟的半私有服务器上,所以现在让我们排除服务器设置和硬件,因为我没有能力更改这些内容。我只是想知道,在我从头重写整个过程的同时,在应用程序本身的范围内,是否有什么可以做的,以减轻管理员的沮丧
如果有什么可以推荐的,太好了,我会试试看。如果我无法控制服务器设置,或者这个问题含糊不清(对不起,我没有更多的信息要说),这也没关系
谢谢大家抽出时间 对此我不是很确定,但我会尝试将html标记添加到StringBuilder对象并调用响应。只需使用StringBuilder对象的内容编写一次。。。我可以想象这可能会导致问题。对此我不是很确定,但我会尝试将html标记添加到StringBuilder对象并调用响应。只使用StringBuilder对象的内容编写一次。。。我可以想象,这可能会导致问题。Microsoft Access数据库的设计不适合扩展。例如,它的最大用户数(理论上)为255个,但微软的建议是将其限制为10个用户。是的,十个 等待时间可能与线程在等待释放访问资源时阻塞有关。因此,第1步,将其迁移到SQL Server或其他专为企业使用而设计的数据库解决方案 Microsoft Jet有一个读缓存,该缓存每PageTimeout毫秒更新一次(默认值为5000ms=5秒)。它还有一个延迟写入机制,在一个单独的线程上操作到主处理,从而将更改异步写入磁盘。这两种机制有助于提高性能,但在某些需要高并发性的情况下,它们可能会产生问题 Jet最多可以支持255个并发用户,但基于文件的体系结构的性能可能会阻止许多并发用户使用它。一般来说,对于10个或更少的并发用户,最好使用Jet。
文章:Microsoft Access数据库的设计不适合扩展。例如,它的最大用户数(理论上)为255个,但微软的建议是将其限制为10个用户。是的,十个 等待时间可能与线程在等待释放访问资源时阻塞有关。因此,第1步,将其迁移到SQL Server或其他专为企业使用而设计的数据库解决方案 Microsoft Jet有一个读缓存,该缓存每PageTimeout毫秒更新一次(默认值为5000ms=5秒)。它还有一个延迟写入机制,在一个单独的线程上操作到主处理,从而将更改异步写入磁盘。这两种机制有助于提高性能,但在某些需要高并发性的情况下,它们可能会产生问题 Jet最多可以支持255个并发用户,但基于文件的体系结构的性能可能会阻止许多并发用户使用它。一般来说,对于10个或更少的并发用户,最好使用Jet。 文章:为FireBug或PageSpeed安装它会告诉您速度慢的关键问题